- 博客(6)
- 资源 (11)
- 收藏
- 关注
原创 B1、WinCE6.0内核启动流程-------之bootloader解释
1.BootLoader的架构 1.1 Bootloader简介 Bootloader是建立在操作系统内核运行之前的一小段程序,通过这段小程序,可以初始化硬件设备、建立系统的内存空间映射图,从而将系统的软硬件环境带到一个已知的状态,以便为最终调用操作系统内核准备好正确的环境。最终,Bootloader把操作系统内核映像加载到RAM中,并将系统控制权传递给它。 一个典型的bootloader
2013-04-02 14:49:25 957
原创 B2、WINCE6.0内核的启动过程----------之OAL解释
[移植OAL] WinCE6.0的内核启动过程: OAL不能调用内核的KernelStart()函数了, 所以自己要实现一个KernelStart() (nkldr.lib替我们完成了这个, 把nkldr.lib链接到OAL),调用nkldr.lib中的KernelStart().然后执行的ARMInit()函数有一个很重要的任务,它将位于OAL的OEMinitGlobals()函数指针
2013-04-02 14:31:39 750
原创 分享大学期间的比赛作品
硬件 : ARM9 TQ2440 +Zigbee(cc2430)+各种传感器+蓝牙透传+平板电脑+wifi摄像头 软件: QT界面+安卓界面+ zigbee协议+各种底层驱动 实现功能:数据无线传输及相应控制。。。 视频地址 http://www.tudou.com/programs/view/r8LjZkK9_EQ/
2013-03-31 18:37:29 614
原创 A3、限制函数内部循环使用局部变量的数目,最多不超过12个
应该尽量限制函数内部循环所用局部变量的数目,最多不超过12个,这样,编译器就可以把这些变量都分配给ARM寄存器;编译器会试图对C函数中的每一个局部变量分配一个寄存器。如果几个局部变量不会交迭使用,那么编译器会对它们分配同一个寄存器。当局部变量多于可用的寄存器时,编译器会把多余的变量存储到堆栈。由于这些变量被写入了存储器,所以被称为溢出或者替换(swapped out)变量,就像虚拟存储器的内容被替
2013-03-30 21:55:45 808
原创 A2、减计数循环要比增计数循环更好。
循环的终止条件应为减计数到零(count dawn to zero),而不是计数增加到某个特定的限制值。由于减计数结果已存储在条件标志里,与零比较的指令就可以省略了。由于不再使用‘作为数组的下标索引,采用减计数就没有任何问题。 int checksum(int * data) { unsigned int i; int sum = 0; for( i = 64;
2013-03-30 21:06:15 640
原创 A1、目前嵌入式ARM数据处理操作几乎是32位的,局部变量最好用32位的数据类定义!
函数示例:用来计算一个包含64个字的数据包的校验和。 int checksum(int * data) { char i; int sum = 0; for( i = 0; i { sum += data[i]; } return sum; } 似乎声明i为char类型是没有什么问题的,甚至可能会觉得一个char类型的数据
2013-03-30 20:33:26 3330
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人