大家好,又见面了,我是全栈君。
在实际项目中,常常出现芯片的内部FLASH空间不够的情况,这就须要将程序分一部分装到外部FLASH中。
为了让大家能少走些弯路,在这里把我在这当中遇到的一些问题和经验教训给大家分享一下。
仅供參考,假设有错误的地方欢迎指正,提前表示感谢!
转载请注明出处:blog.csdn.net/waitig1992
- 硬件环境介绍
- 加入烧写算法
然后就会出现关于烧写算法的菜单:
- 选择烧写算法
假设当中有你想要的算法。直接选择,然后点击add,就可以算法加入进去;假设没有。则必须自己手动编写烧写算法。
编写算法的步骤我会在以后介绍,在此不做过多说明。你的算法编写成功后,也会在这个菜单里显示出来,直接选择就可以。
- 改动起始地址和大小
- 编写jlink配置文件
我项目的配置文件例如以下,给大家提供下參考:
FUNC void PinSel(int p1, int n1, int f1) { _WDWORD(0x4002C000 + (p1 * 32 + n1) * 4, 0x8 | f1); } FUNC void InitNORFlash(void) { int i; PinSel(2,16,1); PinSel(2,17,1); PinSel(2,18,1); PinSel(2,20,1); PinSel(2,24,1); PinSel(2,28,1); PinSel(2,29,1); PinSel(2,30,1); PinSel(2,31,1); for(i = 0; i < 32; i++) PinSel(3,i,1); for(i = 0; i < 21; i++) PinSel(4,i,1); PinSel(4,24,1); PinSel(4,25,1); PinSel(4,30,1); PinSel(4,31,1); /* PCONP |= 1 << 11 */ _WDWORD(0x400FC0C4, 0x04288FDE); // Power On EMC /* EMCCONTROL |= 1 */ _WDWORD(0x2009C000, 0x00000001); // Enable EMC /* EMCDLYCTL */ _WDWORD(0x400FC1DC, 0x00081818); // Config data read delay /* EMCCONFIG */ _WDWORD(0x2009C008, 0x00000000); // Little endian mode /* STATICCONFIG1 */ _WDWORD(0x2009C220, 0x00000081); // 16bit data width // Disable asynchronous page mode // Read when active bits are low // No extend wait /* STATICWAITWEN1 */ _WDWORD(0x2009C224, 0x00000002); // WaitWEn /* STATICWAITOEN1 */ _WDWORD(0x2009C228, 0x00000002); // WaitOEn /* STATICWAITRD1 */ _WDWORD(0x2009C22C, 0x0000001F); // WaitRd /* STATICWAITPAGE1 */ _WDWORD(0x2009C230, 0x0000001F); // WaitPage /* STATICWAITWR1 */ _WDWORD(0x2009C234, 0x0000001F); // WaitWr /* STATICWAITTURN1 */ _WDWORD(0x2009C238, 0x0000000F); // WaitTurn _sleep_(100); }
这是用到的函数,配置文件例如以下:
INCLUDE SST39VF1601.ini InitNORFlash(); // Initialize memory
在下图所看到的的选项卡中的init File 选项中选中配置文件,就可将配置文件加入进去;
- 配置分散载入文件
- 可能遇到的问题及解决
- 经过以上的步骤,基本上就能够成功了。假设当中有错误的地方,希望大家能够帮忙指正,提前表示感谢!假设还有其它问题,能够一起讨论。共同进步!
(以上仅供參考)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/115786.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...