keil将程序装入外部FLASH具体解释
在实际项目中,常常出现芯片的内部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 选项中选中配置文件,就可将配置文件加入进去;
- 配置分散载入文件
- 可能遇到的问题及解决
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FpdGlnMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvd2FpdGlnMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
- 经过以上的步骤,基本上就能够成功了。假设当中有错误的地方,希望大家能够帮忙指正,提前表示感谢!假设还有其它问题,能够一起讨论。共同进步!
(以上仅供參考)
keil将程序装入外部FLASH具体解释的更多相关文章
- keil程序在外部RAM中调试的问题总结(个人的一点经验总结)
keil程序在内部RAM调试的基本步骤网上已经有非常多了,我就不再赘述,大家能够在网上搜到非常多. 可是有些时候内部RAM并不够用,这就须要将程序装入外部RAM中调试,而在这个过程中可能会出现各种各样 ...
- 智能设备逆向工程之外部Flash读取与分析篇
智能设备逆向工程之外部Flash读取与分析篇 唐朝实验室 · 2015/10/19 11:19 author: rayxcp 0x00 前言 目前智能家居设备的种类很多,本文内容以某智能豆浆机为例完成 ...
- STM32学习笔记(八) SPI总线(操作外部flash)
1. SPI总线简介 SPI全称串行外设接口,是一种高速,全双工,同步的外设总线:它工作在主从方式,常规需要至少4根线才能够正常工作.SPI作为基本的外设接口,在FLASH,EPPROM和一些数字通讯 ...
- 基于stm32f4的ucGUI通过外部flash存储汉字库显示任意英文字符和汉字组合(控件可用)
在做一个用到ucGUI的项目的时候要用到不定的汉字和英文字符,但是ucGUI本身又不支持读取芯片外部flash的字库来显示,于是查了下资料,如下: http://www.cnblogs.com/hik ...
- 程序在nor flash中真的可以运行吗?
程序在nor flash中可以运行,但是是有限制的,它不能像RAM那样随意的写(尽管它可以随意的读).在norflash上,不能运行写存储器的指令,不过排除写的地方是RAM类.实验中的三个文件如下所示 ...
- ucgui汉字库存放到外部的flash(控件可用)及写外部FLASH小软件
源:ucgui汉字库存放到外部的flash(控件可用)及写外部FLASH小软件 如何将ucgui的汉字库存放到外部的flash memory(ucgui)(汉字库)(外部flash) ucgui的字库
- 无法对含有多个.java(或.class)文档的程序进行编译(或解释)
通常初学者会出现这样的问题:无法对含有多个.java(或.class)文档的程序进行编译(或解释). root@yogile-VirtualBox:/alive/string# javac work/ ...
- 微信小程序引用外部js,引用外部样式,引用公共页面模板
https://blog.csdn.net/smartsmile2012/article/details/83414642 ================小程序引用外部js============= ...
- Keil STM32调试,使用ST-Link下载程序时提示“flash timeout.reset the target and try it again”
参考: 很郁闷,买来没多久的 STM32F4-DISCOVERY 就挂了? STM32F103RB Jlink调试的时候出现flash timeout.reset the target and t ...
随机推荐
- Linux gdb调试入门
没有使用过gdb调试过程序的觉得gdb是个很神奇的东东,如果你使用它调试一次保证你想忘记它都难,下面看看它的庐山真面目吧! GDB概述 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具. ...
- sql server 2008 中的架构(schame)理解
机构是属于数据库里面的.在一个数据库中,每一张表都属于一个架构,架构就像是命名空间,把数据库中的表分成不同的组,一个组就是一个命名空间,方便管理
- C#使用checked关键字处理"溢出"错误
代码如下: private void btnCalculate_Click(object sender, EventArgs e) { byte num1, num2;//定义两个byte变量 if( ...
- 使用Express创建一个简单的示例
1.安装Express 使用npm包安装工具来安装Express安装包,打开npm命令行,输入: npm install -g express 2.创建一个工程 本示例是在windows下创建的,项目 ...
- Javascript高级程序设计读书笔记(第三章)
第3章 基本概念 3.4 数据类型 5种简单数据类型:undefined.boolean.number.null.string. typeof操作符,能返回下列某个字符串:“undefined”.“b ...
- Homebrew -- Mac软件管家(套件管理yun……)
也许是之前使用linux系统的时候总是习惯使用wget 在mac中只有curl,有点略显不习惯 于是乎某天在搜索mac开发者的时候发现了Homebrew这个东西 ok,是那么句话--惰性是人的天性 有 ...
- 滚动到指定元素的id处+当元素出现在浏览器显示区域就会自动加载
//滚动到指定元素的id处 如:$("#Exam82") function Jump() { var scroll_offset = $("#Exam82"). ...
- MySQL错误Another MySQL daemon already running with the same unix socket
今天遇到RT这个问题后,导致数据库错误,然后在国外网站发现了一个解决方法,记录如下: 原因是:多个Mysql进程使用了同一个socket. 解决方法是:直接把mysql.sock文件改名即可.也可以删 ...
- css之自动换行-设计师零张
自动换行问题,正常字符的换行是比较合理的,而连续的数字和英文字符常常将容器撑大,挺让人头疼,下面介绍的是CSS如何实现换行的方法 对于div,p等块级元素 正常文字的换行(亚洲文字和非亚洲文字)元素拥 ...
- 函数:递归是神马 - 零基础入门学习Python022
函数:递归是神马 让编程改变世界 Change the world by program 我们这节课的主题叫递归是神马,将通过小甲鱼带感的讲解,来告诉大家神马是递归!如果说优秀的程序员是伯乐,那么把递 ...