摘要: 参考资料:韦东山编《嵌入式linux应用开发完全手册》 source insight的强大我就不说了,谁用谁知道,但强大功能的背后都有一套复杂的使用方法,动辄几十页的说明文档看着就头疼,真正常用的功能就那么几个,在此介绍下针对嵌入式linux爱好者的souceinsight的快速入门,希望对大家有用。 source insight 是windows下非常强大的程序代码阅读和编辑工具。特别是阅读程序中的某个宏或函数时,需要了解该函数的原型却不知道该函数是在本文件还是头文件中定 义的,这时可利用source insight把该文件和用到的头文件添加到一个项目中,阅读程序文件时,只用单击某函数或宏, 阅读全文
posted @ 2013-03-16 23:34 wust.zjf 阅读(1235) 评论(0) 推荐(1) 编辑
摘要: 转自:http://www.embedu.org/Column/Column476.htm 从linux内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。提醒一点,udev是应用 层的,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化的代码里调用 class_create为该设备创建一个class,再为每个设备调用device_create创建对应的设备。大致用法如下: struct class *myclass ; class_create(THIS_MODULE, “my_device_d... 阅读全文
posted @ 2013-03-16 20:14 wust.zjf 阅读(649) 评论(0) 推荐(0) 编辑
摘要: main.c :10:2 warning: no newline at the end of file修复这个警告,在文件结尾回车一下就行了。可以很少会有人去仔细探究,为什么gcc会给出这么一个警告?原因其实也很简单,因为标准规定如此。C99第5.1.1.2节这样写道:Each instance of a backslash character (/) immediately followed by a new-line character is deleted, splicing physical source lines to form logical source lines.Only 阅读全文
posted @ 2013-03-16 19:47 wust.zjf 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 转自:http://blog.chinaunix.net/uid-9525959-id-2001831.htmlLinux中ELF格式文件介绍ELF(Executable and Linkable Format)即可执行连接文件格式,是一种比较复杂的文件格式,但其应用广泛。与linux下的其他可执行文件(a.out,cof)相比,它对节的定 义和gnu工具链对它的支持使它十分灵活,它保存的足够了系统相关信息使它能支持不同平台上的交叉编译和交叉链接,可移植性很强.同时它在执行中支持动态 链接共享库。通过本文,可以大致了解Linux系统中ELF格式文件的分类,组成,作用,以及其中包含的内容。另外后 阅读全文
posted @ 2013-03-16 15:10 wust.zjf 阅读(792) 评论(0) 推荐(0) 编辑
摘要: 本文转自《S3C2410完全开发手册》在开始后续实验之前,我们得了解一下arm-linux-ld连接命令的使用。在上述实验中,我们一直使用类似如下的命令进行连接:arm-linux-ld -Ttext 0x00000000 crt0.o led_on_c.o -o led_on_c_tmp.o我们看看它是什么意思:-o选项设置输出文件的名字为led_on_c_tmp.o;“--Ttext 0x00000000”设置代码段的起始地址为0x00000000;这条指令的作用就是将crt0.o和led_on_c.o连接成led_on_c_mp.o可执行文件,此可执行文件的代码段起始地址为0x00000 阅读全文
posted @ 2013-03-16 11:03 wust.zjf 阅读(6047) 评论(0) 推荐(0) 编辑
摘要: 我们需要编译出运行在ARM平台上的代码,所使用的交叉编译器为arm-linux-gcc。下面将arm-linux-gcc编译工具的一些常用命令参数介绍给大家。在此之前首先介绍下编译器的工作过程,在使用GCC编译程序时,编译过程分为四个阶段:1)预处理(Pre-Processing)2)编译(Compiling)3)汇编(Assembling)4)链接(Linking) Linux程序员可以根据自己的需要让 GCC在编译的任何阶段结束,以便检查或使用编译器在该阶段的输出信息,或者对最后生成的二进制文件进行控制,以便通过加入不同数量和种类的调试代码来为今后的调试做好准备。和其它常用的编译器一样,. 阅读全文
posted @ 2013-03-16 10:59 wust.zjf 阅读(1184) 评论(0) 推荐(0) 编辑
摘要: Mov 是把立即数赋给一个寄存器,但对立即数的范围有要求。只能是由8bit连续有效位通过偶数次移位能得到的数。如果立即数超出这个范围,就没办法用一条MOV指令给寄存器赋值。LDR除了普通的读数之外,也有给寄存器赋立即数的功能。你只要写 LDR R0,=0xabcdef它没有立即数范围的限制。因为这是一条伪指令。如果立即数在MOV的要求内,那就用一条汇编来实现。如果不在Mov的范围内,就用其它方式实现,如变成两条指令,或从PC偏移地址读一个32位数给寄存器。MOV是从一个寄存器或者移位的寄存器或者立即数的值传递到另外一个寄存器从本质上是寄存器到寄存器的传递,为什么会有立即数,其实也是有限制的立即 阅读全文
posted @ 2013-03-16 00:37 wust.zjf 阅读(340) 评论(0) 推荐(0) 编辑