Imx6 成功点亮led 裸机程序

第一步,成功点亮led
这一步的意义非凡,别小看了这个小小的led,万事开头难,这次点亮led犹如我小时候第一次看到爸爸用家里唯一的电器——手电筒,其拆件电池灯泡,导线组合出一个点亮灯泡的实验。
大约从疫情刚开始,我看到了正点原子出了详细的Linux开发板教程,说实话真的算很详细了,我便翻出我之前收集的一块imx6s的demo板,想试图通过实现下列目标:

大约折腾了一个月,最开始翻出来cdns上小白的关于linux imx6启动博文,当时看起来已感觉很详细了。知道了imx6系列启动需要IVT,也就是启动头,包含了配置时钟,配置DDR等,于是我就找来其烧写文件,但是它这里不是常规的ivt,启动地址,位置都不同,其DCD也是非常规的。于是我就试图通过jtag口来读取数据,发现有一部分的信息可以读到,但一部分有限制没法读,读回来的这条路似乎也堵死了。最后我试了从正向去生成这个ivt,某宝上买了一些资料,配置了系统和DDR信息后,用官方曾经出的ddr_tester来生成ddr的一些校验信息。但板子上虽有otg usb电路但没有焊接接插件,于是我又再某宝上买了对应的元器件,手动焊接,说实话小的usb接口实在难焊接,买的五个全都坏了,最后想出了,不要接口,直接将usb的四根线焊接在板子上,果然电脑上终于有了usb hub 的识别了。接下来再连接板子下载调试时发现这块板子是产品级有HAB加密的,而是不是轻易说**就**的,所以就开始着手买一块的开发板。
哎,一路走来很艰辛啊,走了很多弯路,但是这中间也学了很多,比如,一块自制的imx电路板的启动流程,otg usb的电路,hab加密技术等。
拿到新的开发板后,我第一步就是想到了
最快的方式当然是找一个可以在这块板子上能跑的uboot.bin,按照合适的方式烧写进去,再读回来,读个十秒钟取消即可,提取前0x1000个字节就包含了ivt 头,其中前0x400个字节,应该没有用,从第0x400地址开始是有用信息。
(另一种是适合各种硬件没问题的板子,用官方之前出的文档,配合软件调出校准值,然后生成bin文件头部
Sw pad gpio4_io16)
然后就是利用原子出的led的裸例,查了新开发板的芯片资料,电路图,编写出适合新开发板上的gpio对应的led代码,修改了链接地址(由于找来的可以在这块板子上能跑的uboot.bin的链接地址和原子的不一致)生成了bin文件,再用winhex 软件和ivt 头组合生成了可在新开发板上执行文件。最后再用windisk软件烧写到sd卡 ,插到开发板上,拨码选择sd卡启动,上电,led终于按照我的意愿闪烁起来了在这里插入图片描述