大家好,又见面了,我是你们的朋友全栈君。
一路摸爬滚打,时至今日,与心爱的TQ2440相伴已有一年,从当初的一无所知到今天的得心应手,其间经历的种种,实在难以言表。想起第一次在串口打出一个字符的时候,那种心情,简直激动得快要爆了,这里先将我学习ARM中的整个过程简单总结一下,以后再详细的针对每个知识点写写东西。希望对刚接触的朋友有个提示作用,也希望高手不吝赐教,给些学习建议,欢迎拍砖^_^。需要说明的是,这仅仅说是ARM,其间涉及到别的知识也是需要很多时间去学习的,这里我就不列举了。
开发板的配套光盘有很多资料文档,在学习之前,大概浏览一下是非常不错的,强烈建议,特别是S3C2440的技术参考手册。 1,熟悉开发板的硬件资源(TQ2440的原理图) 2,熟悉SRAM,SDRAM,Nor Flash,Nand Flash。 3,熟悉内存控制器的初始化,程序要在SDRAM中运行,首先要初始化SDRAM。 4,熟悉ARM920T的启动方式(Nor Flash/Nand Flash)。 5,学会程序下载例程运行(TFTP方式或者USB方式)。 6,搭建开发环境(GCC交差编译)。 7,学习ARMv4指令集,编写简单的汇编程序,下载运行。 8,务必非常熟悉串口UART的使用,后边你自己的程序调试都需要通过串口来输出。 9,学习ARM汇编与C语言的混合编程,GCC内联汇编,掌握参数传递方式和ARM过程调用标准(APCS)即可。 10,到了这一步,基本上就可以用板子上的硬件资源来练习了,LED,按键,IIC接口的EEPROM, LCD等(板子上的蜂鸣器, LED,串口都可以用来当调试工具,观察它们的现象,判断你的程序执行情况)。 11,现在要学习ARM工作模式,异常处理机制,要非常熟悉中断处理,会编写中断处理程序。 12,自己可以写一个bootloader,写DM9000网卡驱动程序,实现ARP,IP,UDP,TFTP协议,从而用你自己的bootloader实现从服务器下载数据到开发板(我已经实现了一个,大家需要的,可以留言说明,我会联系大家)。 13,当第12步完成后,你可以尝试用你的bootloader从PC的TFTP服务器下载Linux内核镜像到开发板,然后启动Linux。 14,现在可以学习uboot了,就是你的开发板一上电就运行的那个东西,主要是学习移植。 如果你把12,13步完成了或者理解了,那么你也理解uboot了,它和你自己写的bootloader是一样的东西,只不过它功能更强大而已,可以做很多事情。 (但是最主要的就是,获取Linux内核镜像,初始化硬件环境,运行Linux)。 15,此刻,若你依然深爱着ARM920T,那么你可以在上面写一个操作系统(或者称为调度器),使用ARM920T的MMU。再编写或移植一套GUI,实现一个文件系统,实现一个TCP/IP协议栈(只要你想得到的,都可以在上面实现,目前我也在做)。
虽然刚毕业几个月,工作中也没有接触ARM9,但是我有时间就会坚持学习ARM9这款CPU,希望有朝一日,在接触新的ARM处理器时,也能快速入手。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/132772.html原文链接:https://javaforall.cn