嵌入式程序开发
冰峰啸
这个作者很懒,什么都没留下…
展开
-
assert用法总结
assert在程序中的用法以及注意事项转载 2011-05-31 10:30:00 · 726 阅读 · 0 评论 -
GNU C中的零长度数组
随手翻阅"linux内核设计与实现"一书,看到一个关于进程的结构体:struct thread_info { struct task_struct *task; struct exec_domain *exec_domain; unsigned long flags; __u32 status; __u32转载 2012-01-05 10:55:33 · 785 阅读 · 0 评论 -
Kernel paic -not syncing: Attempted to kill init!---- linux2.6.32.移植到TQ2440
这篇文章重点在于探讨移植linux2.6.32和busybox到TQ2440开发板上可能出现的问题分析对于移植过程,请按照指导书上的内容按部就班操作问题1. 卡死描述 文件系统不能加载Copy linux kernel from 0x00200000 to 0x30008000, size = 0x00200000 ... Copy Kernel to SDRAM done,NO转载 2011-12-12 17:16:52 · 1112 阅读 · 0 评论 -
关于编译Linux-2.6.38.8内核时s3c_device_ohci未定义问题的分析
在编译Linux-2.6.38.8内核的最后阶段出现s3c_device_ohci未定义的错误: view plainarch/arm/mach-s3c2410/built-in.o:(.init.data+0x30): undefined reference to `s3c_device_ohci' make: *** [.tmp_vmlinux1] Error 1转载 2011-12-10 01:39:17 · 2153 阅读 · 1 评论 -
在linux pc上挂载jffs2文件系统
因为jffs2是构建于MTD设备上的文件系统,所以无法通过loop设备来挂载,但是可以通过mtdram设备来挂载。mtdram是在用RAM实现的MTD设备,可以通过mtdblock设备来访问。使用mtdram设备很简单,只要加载mtdram和mtdblock两个内核模块即可。这两个内核模块一般的linux内核发行版都有编译好的,直接用modprobe命令加载。 下面是在Fedora co转载 2011-12-11 00:05:52 · 1914 阅读 · 0 评论 -
kermit配置文件
Linux下搞嵌入式开发,不能少了kermit这个利器。。。kermit的配置文件-.kermrc放在用户的home下set line /dev/ttyUSB0set speed 115200set carrier-watch offset handshake noneset flow-control nonerobustset file type binset原创 2011-11-15 21:59:08 · 1345 阅读 · 0 评论 -
LINUX netlink机制
Posted on 2009-11-01 22:42 放飞自我 阅读(2718)评论(0) 编辑收藏Netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink 进行应用与内核通信的应用很多,包括:路由 daemon(NETLINK_ROUTE转载 2011-11-16 15:39:13 · 624 阅读 · 0 评论 -
MIPS 指令 系统中常用指令
指令功能应用实例LB从存储器中读取一个字节的数据到寄存器中LB R1, 0(R2)LH从存储器中读取半个字的数据到寄存器中LH R1, 0(R2)LW从存储器中读取一个字的数据到寄存器中LW R1, 0(R2)LD转载 2011-11-14 20:07:21 · 2141 阅读 · 0 评论 -
MIPS 寄存器约定
寄存器约定 对于在一个CPU上进行开发,掌握其工作的CPU的寄存器约定是非常重要的。 MIPS体系结构提供了32个GPR(GENERAL PURPOSE REGISTER)。这32个寄存器的用法大致如下: REGISTER NAME USAGE $0 $zero 常量0(constant value 0) $2-$3 $v0-$v1 函数调用返回值(val转载 2011-11-14 20:02:57 · 1019 阅读 · 0 评论 -
内核模块死机调试
介绍一种内核模块死机调试的方法。在程序中,通常必现的死机很好解决,但是如果是拷机死机的话,则如果有好的方法和工具借助往往会极大的提高解决问题的速度。在linux中,应用空间程序死机通常可以借助GDB、addr2line等工具进行快速定位。但是,在内核空间中,大部分嵌入式芯片都不支持内核空间的KGDB调试。通常在内核中死掉的话,可以根据死机地址再加反汇编,或者是addr2line找到死机的函数或者是转载 2011-11-14 19:20:32 · 4544 阅读 · 0 评论 -
指针数组和数组指针
指针数组,故名思义,就是指针的数组,数组的元素是指针; 数组指针,同样,就是直想数组的指针。 简单举例说明: int *p[2]; 首先声明了一个数组,数组的元素是int型的指针。 int (*p)[2]; 声明了一个指针, 指向了一个有两个int元素的数组。 其实这两种写法主要是因为运算符的优先级, 因为[]的优先级比*高。所以第一种写法,p先和[]结合,所转载 2011-07-03 10:00:50 · 404 阅读 · 0 评论 -
函数指针和指针函数
【函数指针】 在程序运行中,函数代码是程序的算法指令部分,它们和数组一样也占用存储空间,都有相应的地址。可以使用指针变量指向数组的首地址,也可以使用指针变量指向函数代码的首地址,指向函数代码首地址的指针变量称为函数指针。1.函数指针定义函数类型 (*指针变量名)(形参列表);“函数类型”说明函数的返回类型,由于“()”的优先级高于“*”,所以指针变量名外的括号必不可少,后面的“形参列表转载 2011-07-03 10:03:49 · 352 阅读 · 0 评论 -
C语言两种for循环写法分析
每个C程序员都知道同一个for循环语句可以有两种写法:A: for (i = 0; i B: for (i = cnt; i > 0; i--){ }前几天,DEBUG的时候, 发现采用A写法的代码反汇编出来有BUG.当时没有时间记录,环境也没有保存下来.今天尝试重现,又没来出现上次的问题...很奇怪.很久很久以前也听说过这两种写法有区别,今天就顺便分析一下,也算没有白忙.原创 2013-01-09 18:56:19 · 17366 阅读 · 1 评论