分享到:
SPI FLASH读取的汇编实现,注意这个工程只能用KEIL4汇编,KEIL5会报错,我也没弄明白为啥。
单片机为stm32f103c8t6 ,SPI FLASH用的是W25Q16挂在SPI2上。
为何要弄这么个玩意,起因是某一天翻硬盘的时候发现了曾经HACK PSP时候的一些程序资料,我们将一段很短的引导代码放在了存档文件里面,然后HACK掉游戏加载存档的过程让游戏加载这段很短的引导代码,这个引导代码负责加载另一个庞大的程序(HBL)以运行自制的应用软件。
我们也可以仿造这个过程在单片机上实现,首先放一段非常小的代码在FLASH的第一个Page,这个程序负责从SPI FLASH中加载Bootloader程序到SRAM里面,然后跳转到SRAM运行。
这样做有的好处是Bootloader程序不多占用FLASH空间,可以实现更强大的Bootloader程序而不必过多考虑要用几个page的Flash(毕竟BootLoader多用一点FLASH,真正的应用程序就少了一点FLASH可用),只需要考虑SRAM怎么分配。
=========================分割线=====================================
程序中有些别扭的地方:
1、为了不使用内存单元,一个子函数调用完了就返回,子函数不调用其他函数。所有的参数传递采用寄存器传递,CM3的寄存器足够用。
2、83 84 85 86几行程序负责跳转到SRAM的位置,我还不确定这几行代码能不能行。
PS:感谢OPENEDV论坛提供的STM32汇编模板工程。
(0 )
(0 )
回复
举报
- xiaomiking
-
1148 发帖6357 回复18614 积分
- 私信他 +关注
- chen_ying992
-
0 发帖429 回复117 积分
- 私信他 +关注
- xiaomiking
-
1148 发帖6357 回复18614 积分
- 私信他 +关注
发表回复
块
导
航
举报
请选择举报类别
- 广告垃圾
- 违规内容
- 恶意灌水
- 重复发帖