嵌入式学习
qb_2008
可怕的不是无知,而是畏难。
展开
-
串口通信与裸机程序
串口,实在是一个历史悠久的通信方式。如今许多电脑笔记本都不再支持串口,但在嵌入式中,串口却起着举足轻重的作用。嵌入式的控制器,一般都是在arm, sparc, powerpc等处理器外围添加控制单元形成的,其中必然有控制串口的部分。串口的通信,可以简化为两根线Tx, Rx,Tx负责发送,Rx负责接收,当然一端的Tx引脚自然是接到另一端的Rx引脚上。虽然传送是按位来的,但因为有串口控制单元,所以程序原创 2012-06-02 13:08:10 · 1767 阅读 · 0 评论 -
linux对嵌入式程序员的帮助
之前在arm和powerpc的实验板写过一些代码,得以接触arm上bootloader- vivi 和powerpc上的bootloader-uboot。两者虽然都是bootloader,但我却有很有意思的发现。 vivi是韩国三星公司为其s3c2xxx系列的arm芯片编写的bootloader,但我发现它的目录结构,配置方式,makefile系统(简称make系统),都与linux内核原创 2012-06-19 00:34:12 · 1368 阅读 · 0 评论 -
有趣的调试过程
有人说,程序员写代码的能力一定要强,如果写代码不行,错误百出,那他调试能力一定要强。总之,两个优势中至少要占有一个,否则写代码又烂,自己又改正不了,岂不是糟糕至极。本人不才,写代码经常丢东拉西,每次检查自己的程序,几乎都能发现新的bug。在惊喜不断的同时,也锻炼了我临危不惧的神经。开始我很害怕发现程序的错误,写好程序都不怎么用,发现bug后也是尽快修复,很少去系统地检查和测试。后来我发现这样做其实原创 2012-08-25 16:09:40 · 1091 阅读 · 0 评论 -
关于ppc的32位立即数加载问题
在ppc指令体系中,一次最多加载16位立即数。要加载32位立即数,必须分两次进行。很多资料上使用如下加载指令: lis r0, 0x1122 addi r0, r0, 0x3344 这样做确实可以成功地把0x11223344加载到r0中。可是如果换成0x11118000呢? lis r0, 0x1111 addi r0, r0, 0x8000原创 2012-08-25 22:55:40 · 2263 阅读 · 0 评论 -
关于代码分析
我知道每个人的成长都不相同。有的人顺风顺水,有的人命途多舛,有的人独树一帜,有的人引领潮流...... 并不是说谁比谁强,只是各有所长罢了。学习编程多年,我觉得自己的优势,不是精通程序设计,也不是有多少编程诀窍,而是喜欢进行代码分析。如果大家不嫌弃,就听听我的经验。 自从开源运动发展以来,最有效经典的代码就不只是诞生在封闭的实验室中,而是广泛流传在网络上,存在于各个开源项目中。学习和借鉴原创 2012-08-26 00:00:54 · 1952 阅读 · 0 评论 -
关于做事情的计划
我发现自己在做一种事情的时候,是最慢的,最不情愿的。那就是必须做的、但自己觉得不紧急不重要、又没有明确的时间界限的事。比如学英语、锻炼、对已有的程序进行修订,等等。其实这是非常不好的。千里之堤,溃于蚁穴。往往是那些微不足道的小事,在日积月累间决定了人的命运。比如我喜欢做有些挑战的事,不愿意做简单的重复的工作,喜欢学习新的东西,但又缺乏耐心。这种喜好有优点,也有缺点。其实生活也好,工作也好,不可能任原创 2012-08-28 14:52:28 · 1393 阅读 · 0 评论 -
newlib的编译和使用
要熟悉一个新的处理器平台,第一件事是写一些裸机程序。这时我们最想要的,是实现一个printf打印函数,以便及时输出各种信息。除去下层的字节输出驱动不说,printf本身的实现就有够麻烦,如果平时有保存相关的代码还好,不然就很浪费时间。除此之外,还有一些诸如strlen、strcpy之类的函数,我们不愿意自己写,既麻烦而且效率不高,如果能借助已有的代码或库就好了。newlib就满足了原创 2012-11-27 00:38:06 · 20967 阅读 · 0 评论 -
调试小记2
最近遇到一个很棘手的bug,值得记录一下。这是在stm32f103vct6单片机上运行的ucos程序,我根据一些书上的描述移植的(很简单),使用标准库和usb驱动库,因为板卡的USART1没有直接的串口接口,所以使用usb与主机通信并调试。开发环境是eclipse,其实是用makefile+arm-none-eabi-gcc工具链编译的,集成得不好,就是写代码方便。我创建了两个任务,大致代原创 2012-12-04 16:35:22 · 1395 阅读 · 1 评论 -
调试小记3
在实验新东西时往往遇到这样的情况,你一点点地增加功能,添加代码。但在添加某一个新东西时,突然发现原来已经稳定的内容又不行了,真是不进反退。这时往往不是新的东西有问题,而是新的东西和已有内容混合造成的影响。甚至可以理解为已有内容中存在的bug,只是没有表现出来,新的东西一混合进来,一切都乱套了。这种bug不好调试,因为你退回去,系统又正常了,进一步,系统就紊乱了。你只能把这一步拆成许多小步,或者从各原创 2012-12-07 16:03:17 · 861 阅读 · 0 评论