微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > ARM技术讨论 > 嵌入式linux学习笔记20160711-每天进步一点点,向嵌入式进军

嵌入式linux学习笔记20160711-每天进步一点点,向嵌入式进军

时间:10-02 整理:3721RD 点击:
前言:1年前就萌生了学习嵌入式的想法,当时买了一个ARM9(mini2440)的开发板,由于种种原因,拖了一年都没学成,今年7月份终于暗下决心,趁着还不算太老,趁着对嵌入式还有很强的兴趣,还不快拼一把,不然等着老了后悔。
上一周咨询了资深的嵌入式工程师学习嵌入式的路线和方法,他建议从裸机开始,因为之前有一些51单片机和C语言的基础,于是一周内猛看,打算一周把mini2440的硬件裸机都搞懂,没想到事与愿违,ARM裸机还是和51单片机有很大的差别的,如下附上学习笔记:
20160711:ARM汇编中,进入子函数的指令是BL(自动保存返回指针至LR),2440init.s中是这么写的:
[ :LNOT:THUMBCODE ;if thumbcode={false} bl main   L代表logic变量
     bl Main        ;Don't use main() because ......
     b .           ;注意小圆点         
    ]
;//if thumbcod={ture}
    [ THUMBCODE         ;for start-up code for Thumb mode
     orr lr,pc,#1
     bx lr
     CODE16
     bl Main        ;Don't use main() because ......
     b .           ;注意小圆点
     CODE32
    ]
首先判定是否是ARM模式还是Thumb模式,然后进入Main。本以为这应该就没问题了,可是点击Make,发现主函数没有被编译,仅编译了init.s和lib.c文件,最后没办法,和正常运行的init文件作对比,发现在最开头有这么一句IMPORT Main,意思应该是告诉编译器,下面要有可能要调用Main函数,编译器才会知道,类似于C语言,如果子函数放在Main函数下面,编译会出错,必须在Main函数之上也要声明一下。搞定了,LED,按键,Uart终于可以跑起来,下一步搞中断。

万里长征第一步,几年前买的2440,都吃灰了,经过几年的技术积累现在再拿起来学习感觉轻松了。

给个建议,要首先找调试方法,感觉uboot+汇编,最好有仿真器,不然学习效果不大。个人理解。

我一年前买的mini还在沉睡中呢。

好的,谢谢!下一步研究U boot

嗯,我之前搞硬件的,感觉还是学软件有前途一点

再拿起来学习啊,加油

做高频、电源的工资比软件要高的。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top