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 ...
随机推荐
- jre配置了1.6,但是eclipse仍然提示需要1.6以上的java
问题: eclipse创建web项目时,提示错误:Dynamic Web Module 3.0 requires Java 1.6 or newer. 原因: 这是因为当前的编译器java版本太低,请 ...
- [RxJS] Stopping a Stream with TakeUntil
Observables often need to be stopped before they are completed. This lesson shows how to use takeUnt ...
- io系统
一.浅谈io系统 io系统的结构化思想是:输入-转换流-装饰器-输出. 对于字节流来说,常见的结构类为: package com.handchina.yunmart.middleware.servic ...
- this函数的理解
Javascript的this用法 this是Javascript语言的一个关键字. 它代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如, function test(){ this. ...
- silverlight 生产图表(动态图表类型,Y轴数量) .xaml.cs文件
silverlight 页面后台方法 .xaml.cs文件 public void CreateChart(Grid oGrid, ObservableCollection<ListItem&g ...
- 利用MiddleGen-hibernate-r5生成hbm文件及POJO文件
1 先决条件 1.1 已安装JDK(版本1.5以上)并配置环境变量 到http://java.sun.com上下载JDK,配置环境变量(我的电脑右键->属性->高级-&g ...
- Altium Designer 生成 Mach3 G代码的程序
Altium Designer做PCB设计,还是很方便的,最近头脑发热,在网上买了一套CNC机床,用来做钻孔用,但是翻来翻去,基本上所有的软件都是铣削功能,而且很多软件很复杂.翻了好几天,发现没有什么 ...
- destoon实现商铺管理主页设置增加新菜单的方法
1.打开/lang/zh-cn/home.inc.php,找到9,10行替换如下: $HMENU = $DMENU = array('公司介绍', '供应产品', '采购清单', '新闻中心', '荣 ...
- [1] Tornado Todo Day0
Github地址: day0 初始化数据库: jakeychen@JC:~/Public/tornado_todo$ pwd /home/jakeychen/Public/tornado_todo j ...
- 基于ViewPager的一些酷炫切换效果
1.ViewPager可以用于实现类似banner的功能,我曾经在“时间超市”项目中使用过.但如何在此基础上实现一些切换的酷炫效果呢?今天细细品读了鸿洋大神的相关博文,终于学会了如何自定义切换效果. ...