IMX6ULL学习笔记_Boot和裸机篇(5)--- IMX6ULL使用ECSPI3驱动Flash启动程序
项目开源链接以及作者信息
项 | 参数 |
---|---|
github主页 | https://github.com/snqx-lqh |
github项目地址 | https://github.com/snqx-lqh/IMX6ULL_LearningRecord |
gitee项目地址 | https://gitee.com/snqx-lqh/IMX6ULL_LearningRecord |
作者 VX | Qinghua_Li7 |
📖 欢迎交流 如果对你有帮助,希望可以帮我点个赞👍和收藏,谢谢
基础环境
硬件环境:正点原子IMX6ULL MINI板 V1.7 EMMC板
程序说明:为方便开发,程序使用 BootLoader + APP 的方式开发。使用BootLoader来进行升级,前期不将 BootLoader 作为开发重点,所以先使用 UBoot 作为我们的 BootLoader 后续可能会使用自写的 BootLoader 。所以先使用正点原子的教程给板子的 EMMC或者SD卡 下载一个 Uboot。方便实现在线程序升级和运行。随便烧一个就行,不用自己去编译,下载它自带的就可以了。等下做说明。
裸机程序编写软件:SEGGER Embedded Studio V8.24 。 为了在Windows环境下编译裸机开发,所以使用 SES 的软件编写。
本文代码路径
本文的代码将存放在开源项目的:02_Firmware\01_CodeWithoutOS\04_FLASH_Boot中。这节的代码,主要是移植SDK中的中间件操作EMMC
流程说明
只是为了验证ECSPI启动FLASH的可行性,使用的是W25Q128的FLASH,验证流程如下。
1、使用EMMC或者SD卡中的Uboot启动代码,然后烧写本章节提供的带xmodem接收的代码。
2、在代码中,按键触发xmodem接收并且写入Flash,这里写一个裸机程序,就随便烧一个正点原子提供的闪烁灯的程序。
3、将引脚切换到SPI Flash 启动的模式。启动。
上位机可以直接使用我开发的上位机调试助手。发行版中有应用可以直接下载打开。
项 | 参数 |
---|---|
github项目地址 | https://github.com/snqx-lqh/JYSWJ |
gitee项目地址 | https://gitee.com/snqx-lqh/JYSWJ |
可以使用多字符串发送中提前写好要发送的内容。注意勾选发送新行。
还能使用Xmodem发送文件。
EMMC启动代码
这部分和之前内容一样,正常启动就可以。
烧裸机到Flash
我的代码写的是按键按下,开始xmodem接收,然后把获取到的数据烧写到Flash,从代码里就可以看到,要从偏移1KB的地址开始烧写。
切换引脚
根据下面这3张图,得到最后的引脚在拨码开关上是。10001100。除了拨码开关,由于我是使用的ECSPI3,LCD连接线还要做调整,这个可能需要自己买个转接线,然后再做处理。还有就是 LCD_DATA_17和LCD_DATA_19需要拉高。这个看Type=0x450那一行就知道了。主要是控制的BOOT_CFG4[3]和BOOT_CFG4[1]。切换后,启动看是否是裸机状态就行了。可以下载后面一点的代码,比如printf开始的,或者写了启动文件的,感觉前面几个代码,不知道有啥问题,后面研究。我是这样做的。