随笔分类 -  U-boot

摘要:转:http://andyhuzhill.github.io/arm/gcc/asm/2012/09/25/gcc-inline-assemly/在操作系统级的编程中,有时候,C语言并不能完全的使用硬件的功能,这时候就需要嵌入一些汇编代码来实现功能。 有两种方式可以使C语言和assemly语言一起工作,一种是两种语言分开写成两个文件,链接的时候链接成一个文件;另一种就是在C语言中嵌入汇编代码。下面简单介绍一下如何在GCC中嵌入汇编代码。GCC规定了一个内联汇编的语法,不同硬件平台上的GCC内联汇编几乎都是这样的:asm( 汇编指令列表 :输出运算符列表 :输入运算符列表 ... 阅读全文
posted @ 2013-09-18 11:37 摩斯电码 阅读(1692) 评论(0) 推荐(0) 编辑
摘要:转:http://www.cnblogs.com/taek/archive/2012/02/05/2338838.htmlGCC支持在C/C++代码中嵌入汇编代码,这些代码被称作是"GCC Inline ASM"(GCC内联汇编);一、基本内联汇编GCC中基本的内联汇编非常易懂,格式如下:__asm__ [__volatile__] ("instruction list");其中,1.__asm__:它是GCC定义的关键字asm的宏定义(#define __asm__ asm),它用来声明一个内联汇编表达式,所以,任何一个内联汇编表达式都以它开头,它是必 阅读全文
posted @ 2013-09-18 11:35 摩斯电码 阅读(633) 评论(0) 推荐(0) 编辑
摘要:转:http://smileleeboo.howbbs.com/posts/list/3127/81062.html更多文档参见:http://pan.baidu.com/s/1eQ7nd8Q 有时为了高效,有时为了直接控制硬件,有些模块我们不得不直接用汇编语言来编写,并且对外提供调用的接口,隐藏细节,这其实就是内联汇编。如何使用内联汇编?我们就以 GCC 为例,一窥其中奥秘! 一、关键字 如何让 GCC 知道代码中内嵌的汇编呢? 借助关键字!来看下面的例子: __asm__ __volatile__("hlt"); __asm__ 表示后面的代码为内嵌汇编,... 阅读全文
posted @ 2013-09-18 11:05 摩斯电码 阅读(6417) 评论(0) 推荐(1) 编辑
摘要:转:分区只是内核的概念,就是说A~B地址放内核,C~D地址放文件系统,(也就是规定哪个地址区间放内核或者文件系统)等等。1:在内核MTD中可以定义分区A~B,C~D。。。。。。并予以绝对的地址赋值给每个分区。我们可以来看看在内核中是怎样来对MTD进行分区的:arch\arm\plat-s3c24xx\common-smdk.cstatic struct mtd_partition smdk_default_nand_part[] = {[0] = {.name= "Boot",.size= SZ_16K,.offset= 0,},[1] = {.name= "S3 阅读全文
posted @ 2013-09-16 18:56 摩斯电码 阅读(3396) 评论(0) 推荐(0) 编辑
摘要:转载:http://blog.chinaunix.net/uid-28685940-id-3889916.html内核代码绝大部分使用C语言编写,只有一小部分使用汇编语言编写,例如与特定体系结构相关的代码和对性能影响很大的代码。GCC提供了内嵌汇编的功能,可以在C代码中直接内嵌汇编语言语句,大大方便了程序设计。 一、基本内嵌汇编 GCC提供了很好的内嵌汇编支持,最基本的格式是:__asm__ __volatile__(汇编语句模板); 1、__asm__ __asm__是GCC关键字asm的宏定义:#define __asm__ asm __asm__或asm用来声明一个内嵌汇编表达式,所以任 阅读全文
posted @ 2013-09-08 22:30 摩斯电码 阅读(672) 评论(0) 推荐(0) 编辑
摘要:转载:blog.chinaunix.net/uid-28685940-id-3889918.html我们对每个c或者汇编文件进行单独编译,但是不去连接,生成很多.o 的文件,这些.o文件首先是分散的,我们首先要考虑的如何组合起来;其次,这些.o文件存在相互调用的关系;再者,我们最后生成的bin文件是要在硬件中运行的,每一部分放在什么地址都要有仔细的说明。我觉得在写makefile的时候,最为重要的就是ld的理解,下面说说我的经验:首先,要确定我们的程序用没有用到标准的c库,或者一些系统的库文件,这些一般是在操作系统之上开发要注意的问题,这里并不多说,熟悉在Linux编程的人,基本上都会用ld命 阅读全文
posted @ 2013-09-08 22:23 摩斯电码 阅读(7092) 评论(0) 推荐(1) 编辑
摘要:转载:http://blog.chinaunix.net/uid-28236237-id-3867041.htmlU-boot中通过环境参数保存一些配置,这些配置可以通过修改环境参数、保存环境参数、读取环境参数等操作进行灵活的配置,便于调试开发。这篇文章主要来分析一下u-boot中环境参数的实现。文章主要分为四个部分,第一是环境参数的存储格式,第二部分是环境参数的初始化,第三部分是环境参数的读取,第四个部分是环境参数保存过程。首先,我们来看一下环境参数的存储格式。一般嵌入式系统的第一个分区是boot分区,而环境参数一般会采用一种格式保存到boot代码区之后,当然,这个位置不能超出第一个分区的边 阅读全文
posted @ 2013-08-31 23:31 摩斯电码 阅读(553) 评论(0) 推荐(0) 编辑
摘要:转载:http://blog.chinaunix.net/uid-28236237-id-3865045.htmlu-boot第一阶段分析(一)u-boot 第一阶段分析(二)u-boot 第二阶段分析 U-boot第一阶段分析u-boot是在单板刚启动的时候执行的一段程序。其作用是将内核从flash、硬盘等介质上拷贝到内存中,并传递给内核一些启动参数并跳转到内核去执行。由于u-boot的代码非常的依赖于不 同的体系结构。对u-boot的分析也只能提炼出不同体系结构的共性,做相应的总结。总的说来,u-boot所做到工作分为两个阶段。第一个阶段是将u- boot第二阶段的代码拷贝到ram空间,跳 阅读全文
posted @ 2013-08-31 23:28 摩斯电码 阅读(1172) 评论(0) 推荐(0) 编辑
摘要:关于NAND flash的MTD分区与uboot中分区的理解 转自:http://blog.csdn.net/yjp19871013/article/details/6933455?=400850442 今天做内核移植,准备添加NAND flash的驱动,做到MTD分区时,想起在一本书上看到的一句话,说的是分区时每个区之间没有间隙,前一个区的结束地址是后一个区的起始地址。可是当我看我的开发板的教程时,分区如下:static struct mtd_partition smdk_default_nand_part[] = { [0] = { .name = "uboot", . 阅读全文
posted @ 2013-08-30 13:26 摩斯电码 阅读(1762) 评论(0) 推荐(0) 编辑
摘要:U-Boot中的环境命令可以使用$(filesize)来确定刚下载(传输)得到的文件大小.因为使用类似tftp命令传输文件后,会自动更新filesize环境变量。如:setenv updaterootfs nand write.yaffs 30000000 200000 $(filesize)这时如... 阅读全文
posted @ 2013-08-30 10:13 摩斯电码 阅读(2492) 评论(0) 推荐(0) 编辑
摘要:UNIX网络编程第二卷进程间通信对mmap函数进行了说明。该函数主要用途有三个:1、将一个普通文件映射到内存中,通常在需要对文件进行频繁读写时使用,这样用内存读写取代I/O读写,以获得较高的性能;2、将特殊文件进行匿名内存映射,可以为关联进程提供共享内存空间;3、为无关联的进程提供共享内存空间,一般也是将一个普通文件映射到内存中。函数:void *mmap(void *start,size_t length,int prot,int flags,int fd,off_t offsize); 参数start:指向欲映射的内存起始地址,通常设为 NULL,代表让系统自动选定地址,映射成功后返回该地 阅读全文
posted @ 2013-08-29 12:33 摩斯电码 阅读(250) 评论(0) 推荐(0) 编辑
摘要:转载:http://blog.csdn.net/iamlaosong/article/details/7085178我们有个系统每天要下载数据,为了检查下载数据是否正常,需要查看下载数据目录大小,因为每天的数据都差不多,如果变化太大就说明不正常。查看目录大小的命令是du(当然也可以查看文件大小),例如:du ems_data,就是查看ems_data目录下各子目录的大小;du,就是查看当前目录下各子目录的大小;du *,就是查看当前目录下各子目录和文件的大小。为了提高查看效果,我们需要对结果进行排序,因为du的命令结果很乱,例如:从大到小排列:du ems_data | sort -nr按目录 阅读全文
posted @ 2013-08-28 15:32 摩斯电码 阅读(410) 评论(0) 推荐(0) 编辑
摘要:如果要烧写的镜像的格式是yaffs2或者yaffs格式的,那么在往Nand Flash中烧写该镜像是必须采用nand write.yaffs,而不能采用nand write: nand write.yaffs 0x82000000 0 13cb00 将内存地址0x82000000处的内容写到Nand Flash起始地址为0的地方,烧写大小为13cb00 注意:烧写的大小应该为镜像的实际大小其中内存的地址(在本例中是0x82000000)必须要4字节对齐,否则会出现如下错误:nand write.yaffs 0x825363b2 0x0 0x1a29740NAND write... 阅读全文
posted @ 2013-08-27 09:32 摩斯电码 阅读(1674) 评论(0) 推荐(0) 编辑
摘要:通常当NFS不能正常使用时候会给出提示,一般给出一下几种:1)mount:192.168.1.111:/optfailed,reasongivenbyserver:Permissiondenied查看配置文件exports,是否为允许挂载的客户。2)mount:RPC:Unabletoreceive;errno=Noroutetohost首先看是否在同一网段再者输入:[root@localhostetc]#serviceiptablesstatus看防火墙是否开启,有则将其关闭[root@localhostetc]#serviceiptablesstop3)mount:RPC:Unableto 阅读全文
posted @ 2013-08-26 19:09 摩斯电码 阅读(3979) 评论(0) 推荐(0) 编辑
摘要:转自:http://www.embeddedlinux.org.cn/html/xinshourumen/201308/05-2608.htmlsudo是个统管一切的命令。它的字面意思是代表“超级用户才能做!”(super user do!)对Linux系统管理员或高级用户而言,它是必不可少的最重要的命令之一。你可曾有过这样的经历:在终端中试着运行某个命令,结果却遇到“拒绝访 问”?这个就是你所需要的命令!但正所谓,权力越大,责任也越大!较之以根用户身份登录,或者使用 su “switch user” 命令,sudo要好得多。请耐心读下去,看看sudo能为你做些什么! sudo:它有什么用途. 阅读全文
posted @ 2013-08-24 23:57 摩斯电码 阅读(573) 评论(0) 推荐(0) 编辑
摘要:文件查找 find * -name "xarina_evb_defconfig" grep "TEXT_BASE" * -nR find . ! -name "*.txt" -print 搜索除了*.txt之外的文件 find -name *.patch | xargs -i cp '{}' ./p 阅读全文
posted @ 2013-08-21 14:06 摩斯电码 阅读(1196) 评论(0) 推荐(0) 编辑
摘要:转载自:http://blackfin.uclinux.org/doku.php?id=bootloaders:u-boot:serial-flashU-Boot supports serial NOR flashes which hook up to the Blackfin processor via a 4 wire SPI-compatible interface. Commands are provided for reading/erasing/writing of the device.In terms of the command line interface, the sf 阅读全文
posted @ 2013-08-16 10:32 摩斯电码 阅读(1661) 评论(0) 推荐(0) 编辑
摘要:修改:mw [内存地址] [值] [长度]例如:mw 0x02000000 0 128表示修改地址为0x02000000~0x02000000+128的内存值为0.显示:md [内存地址] [长度]例如:md 0x02000000 128表示显示0x02000000的内存数据,长度为128个32bit.注意[长度]的取值,例如:# md 02000000 1002000000: ffffffff ffffffff ffffffff ffffffff ................02000010: ffffffff ffffffff ffffffff ffffffff ........... 阅读全文
posted @ 2013-08-16 10:18 摩斯电码 阅读(618) 评论(0) 推荐(0) 编辑
摘要:转载自:http://linux.chinaunix.net/techdoc/install/2009/04/13/1107608.shtml发信人: armlinux (armlinux), 信区: Embedded标题: 关于Embedded Linux启动的经典问题发信站: 哈工大紫丁香 (Sun Aug 31 20:14:46 2003)On Sat 06 Apr, Arts Thibaut wrote:> due to compiling problem, i try to understand the boot sequence. I know> the main po 阅读全文
posted @ 2013-08-09 20:35 摩斯电码 阅读(441) 评论(0) 推荐(0) 编辑
摘要:下面是Linux开发常用的软件包: 软件包的名称 作用描述 安装方式 build-essential sudo apt-get install build-essential policycoreutils audit2allow工具 sudo apt-get install policycoreu 阅读全文
posted @ 2013-08-09 14:34 摩斯电码 阅读(5245) 评论(2) 推荐(0) 编辑