怎样将贺工给的ARM高级课程程序下载到nandflash中运行

合集下载

linux2.6nandflash驱动说明

linux2.6nandflash驱动说明

linux2.6nandflash驱动说明linux2.6.14移植---nandflash--by farsight 一、实验目的本实验是在前面网络芯片驱动实验的基础上,加入了对nandflash的支持,从而进一步完善系统结构,通过移植的过程来了解nandflash的移植方法。

二、实验设备1、虚拟机ubuntu7.042、优龙公司开发板fs2410以及开发板中移植好的u-boot1.1.43、串口线和网线、电源各一根三、实验步骤1、指明分区信息在arch/arm/mach-s3c2410/decs.c文件中:root@farsight:/source/kernel/linux-2.6.14# vim arch/arm/mach-s3c2410/devs.c在文件中添加以下信息:1、建立分区表:#include#include#includestatic struct mtd_partition partition_info[]={{name: "kernel",size: 0x001c0000,offset: 0x00040000,},{name: "root",size: 0x02300000,offset: 0x00200000,},{name: "yaffs",size: 0x01B00000,offset: 0x02500000,}};2、加入nandflash分区struct s3c2410_nand_set nandset={nr_partitions: 4,partitions:partition_info,};3、建立nandflash文件支持:struct s3c2410_platform_nand superlpplatform={tacls:0,twrph0:30,twrph1:0,sets:&nandset,nr_sets:1,};2、加入nand flash芯片支持到nand flash驱动修改此文件中的s3c_device_nand结构体变量,添加对dev成员的赋值:struct platform_device s3c_device_nand = {.name = "s3c2410-nand",.id = -1,.num_resources = ARRAY_SIZE(s3c_nand_resource),.resource = s3c_nand_resource,.dev={.platform_data=&superlpplatform}};3、指定启动时初始化kernel启动时依据我们对分区的设置进行初始配置,修改arch/arm/mach-s3c2410/mach-smdk2410.c文件root@farsight:/source/kernel/linux-2.6.14#vim arch/arm/mach-s3c2410/mach-smdk2410.c 修改smdk2410_devices[].指明初始化时包括我们在前面所设置的flash信息static struct platform_device *smdk2410_devices[] __initdata = {&s3c_device_usb,&s3c_device_lcd,&s3c_device_wdt,&s3c_device_i2c,&s3c_device_iis,&s3c_device_nand, /*added*/};4、配置MTDDevice Drivers --->Memory Technology Devices (MTD) --->[*] MTD partitioning supportNAND Flash Device Drivers ---><*> NAND Device Support<*> NAND Flash support for S3C2410/S3C2440 SoC5、编译内核root@farsight:/source/kernel/linux-2.6.14# make zImageroot@farsight:/source/kernel/linux-2.6.14# cp arch/arm/boot/zImage /tftpboot 启动开发板进行下载。

试图搞懂MDK程序下载到flash(六)--DNW+supervivi+MDK下载到Nand Flash

试图搞懂MDK程序下载到flash(六)--DNW+supervivi+MDK下载到Nand Flash

试图搞懂MDK程序下载到flash(六)--DNW+supervivi+MDK 下载到Nand Flash不容易啊,终于把将MDK程序下载到我的mini2440开发板上的nand flash的方法找到了,我是利用韦东山老师的那套方法即利用DNW和supervivi下载到nand flash的。

当然,只是方法之一,因为我能隐约的感觉到还可以使用MDK直接下载。

下面我就将下载到nand flash的方法步骤完整的贴出来。

在讲解方法之前,我还是想说明几点原理,避免知其然而不知其所以然。

supervivi的各功能选项说明功能[x]:对Nand Flash进行默认分区,此命令仅对Linux系统有效。

功能[v]:通过USB下载Linux Bootloader之vivi到Nand Flash的vivi 分区功能[k]:通过USB下载Linux 内核到Nand Flash的kernel 分区功能[y]:通过USB下载yaffs 文件系统映像到Nand Flash的root 分区功能[a]:通过USB下载用户程序到Nand Flash中,一般这样的用户程序为bin可执行文件,如2440test(需要支持超过4K限制)、uCos2(开发板中带的uCos2支持Nand Flash 启动)、U-Boot等;当然,也可以使其他任意大小的bin程序。

功能[n]:通过USB下载WinCE之启动程序Nboot到Nand Flash的root分区功能[l ]:通过USB下载WinCE的启动logo功能[w]:通过USB下载WinCE发行映像NK.bin到Nand Flash功能[d]:通过USB下载程序到指定内存地址(通过DNW的Configuration/Option选项指定运行地址)并运行。

对于我的mini2440开发板,SDRAM的物理起始地址是0x3000 0000,结束地址是0x3400 0000,大小为64MB,另外BIOS的USB下载功能时应指定地址在0x30000000 - 0x33de8000之间。

Jlink烧录nand flash操作(步骤一)

Jlink烧录nand flash操作(步骤一)

h
loadbin d:\FL_2440bootV5.1.bin 0x30010000
setpc 0x30010000
g
h
loadbin d:\HFL_2440bootV5.bin 0x30010000
setpc 0x30010000
g
说明:u-boot.bin是我们需要下载到nand flash的程序;可以是之前提到的myled.bin。
setpc 0x30010000
g
h
loadbin d:\FL_2440bootV5.1.bin 0x30800000
setpc 0x30800000
g
h
loadbin D:\led\led.bin 0x30800000
setpc 0x30800000
g
------------------------------------------------------
之后可以在串口线上面看到对应的信息,进行命令烧写
--------------------------------------------
说明:因为选择从nand flash启动时;0x00000000是映射到4K的SRAM中的,SRAM不需要初始化、即可直接运行程序。
S/N : 286370559
Feature(s) : RDI,FlashDL,FlashBP,JFlash
VTarget = 3.397V
Info: TotalIRLen = 4, IRPrint = 0x01
Info: Using DBGRQ to halt CPU
Info: Resetting TRST in order to halt CPU

试图搞懂MDK程序下载到Flash(四)--生成bin文件下载到Nor Flash

试图搞懂MDK程序下载到Flash(四)--生成bin文件下载到Nor Flash

试图搞懂MDK程序下载到Flash(四)--生成bin文件下载到Nor Flash喜讯啊!!下载到flash中的一种实现了啊!!!鸡冻了!终于可以脱机运行了,尽管是下载到了Nor Flash中运行,还没有下载到Nand Flash中运行,但是这也是一个进步了吧,下面详细介绍一下MDK编译的程序下载到Nor Flash运行的步骤。

1、编写程序我的主程序功能是实现UART的输出功能,工程文档结构图如下:需要自己编写的文件有三个main.c uart.c uart.h,下面贴出这三个文件的实验代码:main.c文件#include<s3c2440.h>#include"uart.h"int main(){unsigned int a=10; //系统时钟初始化,FCLK=400MHz,HCLK=100MHz,PCLK=50MHzUart0_Init(115200); //初始化并设置波特率为115 200while(1){Uart0_Printf("Uart0_Printf test output is:%d\n",a);}}uart.c文件#include<s3c2440.h>#include<stdarg.h>#include"uart.h"#define PCLK 50000000#define UART_BRD (int)((PCLK/(baudrate*16))-1)/************************************************函数名称:void Uart0_Init(unsigned int baudrate)*参数说明:baudrate:波特率*返回值:无*全局变量: 无*功能:对UART0进行初始化************************************************/void Uart0_Init(unsigned int baudrate){GPHCON&=~((3<<4)|(3<<6)); //GPH2--TXD0;GPH3--RXD0GPHCON|=((2<<4)|(2<<6)); //设置GPH2、GPH3为TXD0、RXD0功能GPHUP=0x00; //上拉电阻使能ULCON0|=0x03; //设置数据发送格式:8个数据位,1个停止位,无校验位UCON0=0x05; //发送模式和接收模式都使用查询模式UBRDIV0=UART_BRD; //设置波特率,其中波特率作为一个参数传递到该初始化函数URXH0=0; //将URXH0清零}/************************************************函数名称:void putc(unsigned char c)*参数说明:c:通过串口接收到的字符,注意这里是8位数据*返回值:无*全局变量: 无*功能:将通过串口接收到的字符发送给PC机并显示在* 串口调试工具。

MDK下直接使用NAND_FLASH的方法

MDK下直接使用NAND_FLASH的方法
二、不要采用自己写链接脚本的方式,用默认的就可以了。
三ቤተ መጻሕፍቲ ባይዱ如果以后程序加大会出现下载失败,那是因为下载设置中对于NAND设置的大小太小了,因为如果设置太大会每次都按照设置擦除一次,有点太慢了。所以我设置的比较小。
一般我们开发的时候,如果有仿真器的话,选择SDRAM方式,不用写进FLASH里面,直到调试成功再写。
对于用NANDFLASH方式,会在每次仿真的时候自动下载。
注意:!!
一、不允许修改测试程序中的初始化汇编程序前面指令的结构,因为在这些数据里面有些参数引导程序要读取判断,并且要修改。
三、解压软件测试到一个文件夹中,同样用MDK打开相应的工程文件,也是自己编译一下,然后点击下载,程序就可以工作了。
以后自己写的用户程序,只要修改这个软件测试的工作就可以了。这个测试程序有三种工作模式,一种是完全软件仿真,一种是程序直接写到SDRAM里面运行,另外一种就是普通的写到FLASH里面。
请按照以下顺序操作就可以:
一、将压缩文件中的S3C2440_NAND_MY.FLX拷贝到MDK软件安装目录下的FLASH目录下就可以了。
二、解压bootloader到一个文件夹中,然后用MDK打开相应的工程文件,自己编译一下,然后点击下载,或者是从菜单选择(Flash->DownLoad)也可以。下载成功后关闭此项目。

移植Nand flash驱动了解Linux内核Nand Flash的实现_华清远见

移植Nand flash驱动了解Linux内核Nand Flash的实现_华清远见

移植Nand flash驱动了解Linux内核Nand Flash的实现如何通过移植Nand flash驱动,了解Linux内核Nand Flash的实现?本篇文章就来教你如何实行!在说到正题之前,先来介绍一下Nand Flash吧!Nand-flash存储器是flash存储器的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。

Nand-flash存储器具有容量较大,改写速度快等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的应用,如嵌入式产品中包括数码相机、MP3随身听记忆卡、体积小巧的U盘等。

下面回到正题。

【实验目的】Nand flash 是嵌入式系统最常用的内部存储设备,通过移植Nand flash驱动,了解Linux内核Nand Flash的实现。

说明:在本系统移植课程实验中命令行提示符“$”表示是在主机上执行,“#”表示在目标板执行。

【实验环境】● 主机:Ubuntu 10.10 (64bit);● 目标机:FS_S5PC100平台;● 交叉编译工具链:arm-eabi-4.4.0(Android4.0.4自带交叉工具链);【实验步骤】1. 添加驱动文件添加针对我们平台的Nand flash驱动。

● 拷贝s3c_nand.c到drivers/mtd/nand下;● 拷贝regs-nand.h到arch/arm/mach-s5pc100/include/mach下;cp s3c_nand.c drivers/mtd/nandcpregs-nand.h arch/arm/mach-s5pc100/include/mach2. 修改文件针对平台上的nand flash设备,修改drivers/mtd/nand/nand_base.c第2975行。

for (i = 0; i< 5; i++)3. 配置文件修改● 修改drivers/mtd/nand/Kconfig,在if mtd_nand(216行)下面添加如下内容:config MTD_NAND_S3Ctristate "NAND Flash support for S3C SoC"depends on (ARCH_S3C64XX || ARCH_S5P64XX || ARCH_S5PC1XX|| ARCH_S5PC100) && MTD_NANDhelpThis enables the NAND flash controller on the S3C.No board specfic support is done by this driver, each boardmust advertise a platform_device for the driver to attach.config MTD_NAND_S3C_DEBUGbool "S3C NAND driver debug"depends on MTD_NAND_S3ChelpEnable debugging of the S3C NAND driverconfig MTD_NAND_S3C_HWECCbool "S3C NAND Hardware ECC"depends on MTD_NAND_S3ChelpEnable the use of the S3C's internal ECC generator whenusing NAND. Early versions of the chip have had problems withincorrect ECC generation, and if using these, the default ofsoftware ECC is preferable.If you lay down a device with the hardware ECC, then you willcurrently not be able to switch to software, as there is noimplementation for ECC method used by the S3C● 修改drivers/mtd/nand/Makefile添加如下内容(19行):obj-$(CONFIG_MTD_NAND_S3C) += s3c_nand.o4. 平台代码修改修改arch/arm/mach-s5pc100/mach-smdkc100.c添加如下内容:● 添加头文件1 #if defined (CONFIG_MTD_NAND_S3C)2 #include3 #include4 #include5 #endif● 添加平台设备01 #if defined(CONFIG_MTD_NAND_S3C)02 /* Nand Flash Support */03 static structmtd_partition s5pc100_nand_part[] = {04 [0] = {05 .name = "bootloader",06 .size = SZ_1M,07 .offset = 0,08 },09 [1] = {10 .name = "kernel",11 .offset = MTDPART_OFS_APPEND,12 .size = SZ_1M*3,13 },14 [2] = {15 .name = "rootfs",16 .offset = MTDPART_OFS_APPEND,17 .size = MTDPART_SIZ_FULL,18 },19 };2021 struct s3c_nand_mtd_info s5pc100_nand_mtd_part_info = {22 .chip_nr = 1,23 .mtd_part_nr = ARRAY_SIZE(s5pc100_nand_part),24 .partition = s5pc100_nand_part,25 };2627 static struct resource s5pc100_nand_resource[] = {28 [0] = {29 .start = 0xE7200000,30 .end = 0xE7200000 + SZ_1M,31 .flags = IORESOURCE_MEM,32 }33 };3435 structplatform_device s5pc100_device_nand = {36 .name = "s5pc100-nand",37 .id = -1,38 .num_resources = ARRAY_SIZE(s5pc100_nand_resource),39 .resource = s5pc100_nand_resource,40 .dev = {41 .platform_data = &s5pc100_nand_mtd_part_info,42 }43 };44 #endif● 添加平台设备列表在smdkc100_device[]结构体数组中添加如下内容:1 #if defined(CONFIG_MTD_NAND_S3C)2 &s5pc100_device_nand,3 #endif5. 相关头文件修改修改arch/arm/plat-samsung/include/plat/nand.h添加如下内容:1 #if defined(CONFIG_MTD_NAND_S3C)2 struct s3c_nand_mtd_info {3 uintchip_nr;4 uintmtd_part_nr;5 structmtd_partition *partition;6 };7 #endif6. 配置内核$ make menuconfigDevice Drivers ---><*> Memory Technology Device (MTD) support ---><*> Caching block device access to MTD devices<*> NAND Device Support ---><*> NAND Flash support for S3C SoC[*] S3C NAND Hardware ECC-*- Enable the block layer --->Partition Types --->[*] Advanced partition selection[*] PC BIOS (MSDOS partition tables) support[*] BSD disklabel (FreeBSD partition tables) support 7. 编译内核编译内核并拷贝到tftpboot下。

TX2440jlink烧写Nandflash

TX2440jlink烧写Nandflash

TX2440jlink烧写Nandflash如何利用JLINK烧写U-boot到NAND Flash中(注意方法三,很经典)很多同学使用笔记本作为自己的ARM开发和学习的平台,绝大多数笔记本都没有并口,也就是无法使用JTag调试和烧写程序到Nand Flash中,幸好我们还有JLINK,用JLINK烧写U-boot到Nor Flash 中很简单,大部分NOR Flash都已经被JLink的软件SEGGER所支持,而新手在学习的时候经常会实验各种各样的命令,最悲剧的莫过于将NAND Flash中原有的bootloader给删除了,这时候开发板上电后由于没有bootloader,硬件没有被初始化,在NAND Flash中的操作系统也就无法被加载,开发板成“砖”了,这时候笔记本又无法利用JTag烧写程序进Nand Flash。

起始这些可以利用JLink通过两种方法解决:一、方法一,利用NOR Flash。

这种方法是利用JLink能够烧写程序到NOR Flash来完成的,首先利用J-FLASH ARM将u-boot.bin烧写进NOR Flash(记得烧写到NOR Flash的0x0起始地址处),然后设置开发板从NOR Flash启动,这时候系统进入U-boot 命令行模式,这时候打开J-Link commander,输入命令:r 看JLink是否能识别开发板的信息(也就是判断JLink是否连接正常)。

以下是在J-Link commander里的命令,先假设u-boot.bin在你电脑的D盘根目录下。

1 1. speed 12000 //设置TCK为12M,下载程序时会很快2 2. loadbin d:\u-boot.bin 0x300000003注意:0x30000000是你想要下载u-boot.bin到开发板的内存地址,内存地址根据不同的开发板设定不同,因为本文中使用的是FL2440,片上系统是S3C2440,内存挂载的地址区域是0x30000000~0x33ffffff,我们只需要把u-boot.bin下载到这片区域即可,然后我们在U-boot命令行模式输入NAND Flash擦除和写入命令即可:4nand erase 0 400005// 擦除从0地址开始的大小为0x40000的Nnad Flash扇区,0x40000是待写入的U-boot.bin 的大致长度,长度必须为NAND Flash页大小的整数倍,通常会需要比u-boot.bin实际长度长。

基于ARM平台和NAND flash启动技术的u-boot移植过程浅析

基于ARM平台和NAND flash启动技术的u-boot移植过程浅析

0 引 言
b o 德 国 D N 小 组 的 开 发 用 于 多 种 嵌 入 式 C U 的 0t是 EX P B o 0d r ot ae 程序 , ~ ot l u b o 不仅仅支持嵌入 式 L u 系统 的引 导 ,当前 , ix n 它还 支持 N tS , Wok, NX R E , R O , yx S嵌 入式操 eB D Vx rs Q , T MS A T S Ln O 作系统 。u b t 了支持 P w r C系列 的处理器 外 。 —o 除 oe P 还能支持 M P 、 IS x 6 A M、 IS X cl等诸多常用系列的处理器。 8 、R NO 、Sa e 目前关 于 u bo 的移植解 决方 案 主要面 向 的是 微处 理器 中 的 — ot N R f s . N N ah O ah 而 A D f s 闪存容量 大 , l l 价格便宜 。 如果能在 微处理器 上的 N N ah A Dfs 中实现 ubo 的启动 .则不仅有效 降低嵌入式应用 l —ot 系统 的成本 . 也给实 际应用带来极大的方便。
Po t g p o e so - o t ri r c s fu b o . n
【 yw r sE b d e s m ; R ;ot ae;A D f s; bo Ke o d 】 m e dds t sA M B o od r N ah — ot ye L N l u
【 bt c]oi f ot ae iavr iprn pri t m eddssm dv om n p cs i ae aa zs otgo u bo A s at rn o Bo odrs e oat atn h e bde y e ee p et r es ppr nl e bon —ot r P tg L y m t e t l o . y i f

如何用hjtag在nand flash中烧写boot

如何用hjtag在nand flash中烧写boot

烧写nand flash的前提,给开发板连接好电源线、串口线和jtag(使用wiggler口)。

插好核心板跳线J5。

1.开发板上电,用H-JTAG检测CPU。

2.点击H-JTAG的菜单Flasher—>Start H-Flasher如图1图13.然后进行配置。

第一项Flash Selection,选择nand里面的s3c2440+k9f1g08,如图2注意:有的可能没有nand芯片可选,不用着急,这是你的H-JTAG版本太低了,下载一个H-JTAG_0.9.2版本的装上即可。

在H-JTAG菜单栏的Help的下拉菜单中有H-JTAG Home,即H-JTAG主页,根据提示就可以在上边下载一个H-JTAG_0.9.2版本的软件了。

图2 4.第二项Configuration,配置如图3:图35.第三、四项不用设置6.第五项Programming。

首先要检测Flash芯片,点击右上角的Check。

如果检测到则如图3篮圈部分所示:芯片的型号应和图2右侧的内容相符。

如果有需要,可以先擦除(erase)一下flash,注意,这个擦除默认是全flash擦除。

注意:在CPU还在初始化阶段可以检测多次,但当开发板启动到图4DNW所示的时候,则只能检测一次,当再次检测的时候会提示你检查FLASH型号如图5。

7.Type、Dst Addr、Src选择如图3所示。

烧写文件为2440boot.bin.图4图58.上边的一切都准备好之后则开始烧写了,点击Check下面的Program,则出现图6所示的进度条,烧好之后Close。

图69.到现在位置,Boot以基本烧写完毕,关闭电源。

10.开发板上电即可启动BOOT了如图8图7。

u_boo移植(六)之支持Nand Flash操作

u_boo移植(六)之支持Nand Flash操作

u_boo移植(六)之支持Nand Flash操作通过上一节uboot中Nand Flash操作的部分源码分析我们可以知道,如果想在uboot中驱动我们自己开发板上的Nand Flash设备,只需要完成以下几件事情就可以了。

1.修改include/configs/fsc100.h,定义宏CONFIG_CMD_NAND,取消宏CONFIG_CMD_ONENAND2.修改include/configs/fsc100.h,定义宏CONFIG_SYS_MAX_NAND_DEVICE,值为13.需要在drivers/mtd/nand目录下添加s5pc100_nand.c文件,完成FSC100的NAND Flash设备初始化(1)初始化Nand Flash硬件接线到SOC上的GPIO口(2)初始化SOC的Nand Flash控制器(3)实现s5pc100_hwcontrol函数中实现根据ctrl值是否含有NAND_CLE、NAND_ALE来决定是向NFCMD寄存器写值还是向NFADDR寄存器写值(4)实现s5pc00_select_chip函数,完成对Nand Flash设备片选和取消片选(5)实现s5pc100_dev_ready函数,完成对Nand Flash设备进行是否忙碌探测关于如何对Nand Flash进行读、写、擦除、坏块管理等操作,uboot源码中的MTD框架已经帮我们做好了。

好了,我们已经知道需要干什么了,接下来就开始干活吧!一、修改include/configs/fsc100.h文件,添加和取消相应的宏在fsc100.h文件里面,添加以下代码:二、drivers/mtd/nand目录下添加s5pc100_nand.c文件大家可以将此目录下的s3c2410_nand.c拷贝成s5pc100_nand.c,然后进行修改。

下面给出给我修改的代码:需要注意的是,不同的开发板配置不一样,流程都一样,说白了就是操作的寄存器不一样,大家可以根据自己开发板实际情况自行修改。

如何在Keil4下通过J-Link下载文件数据到STM32外部的Nor Flash

如何在Keil4下通过J-Link下载文件数据到STM32外部的Nor Flash

如何在Keil4下通过J-Link下载文件数据到STM32外部的Nor Flash实验目的:把一张320*240像素的图片文件,通过J-Link下载到STM32外部的Nor Flash里去,然后再读到LCD显示屏显示出来。

用LCD转换图片工具把图片搞成一个C文件。

准备烧写算法:声明:图例中用到的地址需要根据你自己的情况作相应调整。

Keil单片机开发平台是根据预先设定好的Flash烧写算法将用户程序烧到单片机的Flash内部的,那么由于这个算法是固定的,我们往往不关心,所以我们对其原理不是很了解,实际上,我们都知道,要将程序烧进去,需要在工程选项中选择对应的单片机型号,如下图所示。

这个过程就是准备Flash的烧写算法,选中了某个单片机型号,就确定了其使用的Flash特征,那么这些算法藏在什么地方呢。

这些算法就藏在Keil安装的根目录下X:\Keil\ARM\Flash目下,该目录下有很多的文件夹,每个文件夹里有对应的工程,每个工程都是某种型号单片机的Flash烧写算法,他们具体的内容不同,但是具有统一的接口,以便被Keil调用。

现在我们要烧写STM32的外部Nor Flash,所以我们要新建一个算法:新建一个文件夹,如Test。

将X:\Keil\ARM\Flash\STM32F10x\下的所有文件拷进Test文件夹来,将X:\Keil\ARM\Flash\SST39x160x\下的FlashPrg.c文件也拷进Test文件夹来并覆盖同名文件,将X:\Keil\ARM\Flash\下的FlashOS.h 文件也拷进Test文件夹来。

如果你使用的Nor Flash不在MDK自带驱动的范围内,那么需要根据FlashPrg.c文件自行编写相关函数。

打开工程文件STM32Fx.uvproj,此时会报一个错误,提示没有选择STM32的Device型号。

这时你根据你的STM32的型号选择相应的就OK了,如下图所示。

通过FSMC总线执行NORFLASH中程序的步骤

通过FSMC总线执行NORFLASH中程序的步骤

通过FSMC总线执行NORFLASH中程序的步骤
从外部NOR闪存存储器执行代码
大容量的STM32F10xxx内置了多达512K字节的闪存存储器,对于多数应用是足够了。

需要更多存储器容量的应用,可以使用外加的NOR闪存存储器。

本节说明了如何使用外部NOR闪存存储器运行用户程序。

这需要2个重要的步骤:

加载用户程序至外部NOR存储器:这个操作需要对开发工具进行特别的配置:在链接文件中,必须指定NOR闪存存储器的开始地址(或任何其它地址),这是需要放置用户程序的地址。


执行用户代码:一旦用户程序代码加载到NOR闪存存储器,在内部闪存存储器中需要有一段配置FSMC的程序,配置好FSMC后可以跳转至(NOR闪存存储器中的)用户程序代码执行。

当然MDK下也可以吧FSMC的配置信息写到DeBug脚本文件里。

使用JLink烧写ARM9开发板NAND+FLASH的方法

使用JLink烧写ARM9开发板NAND+FLASH的方法

使用JLink烧写ARM9开发板NAND+FLASH的方法使用JLink间接烧写ARM9开发板Nor或Nand Flash的方法1.简要说明JLink的调试功能、烧写Flash的功能都很强大,但是对于ARM9的Flash操作有些麻烦:烧写Nor Flash时需要设置SDRAM,否则速率很慢;烧写Nand Flash只是从理论上能够达到,但是还没有人直接实现这点。

本文使用一个间接的方法来实现对S3C2410、S3C2440开发板的Nor、Nand Flash的烧写。

原理为:JLink可以很方便地读写内存、启动程序,那么可以把一个特制的程序下载到开发板上的SDRAM去,并运行它,然后使用这个程序来烧写。

2.操作步骤2.1连接硬件对于大多数的S3C2410、S3C2440开发板而言,它们所用的JTAG接口一般是2.0mm 间距的。

JLink采用的是标准的2.54mm间距20pin的JTAG接口,所以可能需要用到转接板。

2.2运行J-Link commanderJ-Link commander启动后会自动化检测CPU,如果没有发现检测到CPU,就在里面执行usb命令连接JLink,再执行r命令识别处理器。

2.3下载运行特制的程序对于S3C2410、S3C2440处理器,它们内部有4K的SRAM,当使用Nor Flash启动时,地址为0x40000000;当使用Nand Flash启动时,地址为0。

对于S3C2410、S3C2440开发板,一般都外接64M的SDRAM。

SDRAM能被使用之前,需要经过初始化。

所以,先把一个init.bin下载到内部SRAM去运行,它执行SDRAM的初始化;然后再下载一个比较大的程序,比如u-boot到SDRAM去运行,它将实现对Nor、Nand Flash的操作。

以下是在J-Link commander里的命令,假设init.bin、u-boot.bin在e:盘下。

1.speed12000//设置TCK为12M,下载程序时会很快2.下载并运行init.bin,这是用来初始化SDRAM的2.1如果是NAND启动:loadbin e:\init.bin0setpc0g2.2如果是Nor启动:loadbin e:\init.bin0x40000000setpc0x40000000g3.下载特制的uboot:hloadbin e:\u-boot.bin0x33f80000setpc0x33f80000g现在,u-boot已经启动了,在串口工具上可以看到uboot的启动信息了,以后就可以通过网络、串口下载文件,然后使用u-boot里的命令进行烧写。

arm烧写Flash过程

arm烧写Flash过程

⏹程序调试结束,要将其可执行文件烧写(或称固化)到目标机中Flash运行,这个过程要通过一个转门的下载软件来进行,以Embest OnLine Flash Programmer for ARM为例,来说明该软件的安装和使用。

⏹ 1. 安装Flash Programmer⏹Flash Programmer安装过程比较简单,运行Flash Programmer安装包中的Setup.exe,按照提示一步步执行即可。

⏹Flash Programmer安装程序将自动区分电脑是否已安装Embest IDE软件的情况:⏹①电脑已安装Embest IDE软件,安装程序将会把Flash Programmer缺省安装到“Embest IDE安装目录\Tools\FlashProgrammer”目录,见图2-24。

同时安装程序将自动探测是否安装与IDE软件共享的设备模块和驱动程序,安装完毕后电脑无需重新启动。

如果IDE已注册,软件可直接运行。

⏹②电脑未安装Embest IDE软件,安装程序将会把Flash Programmer缺省安装到“Program Files\Embest\FlashProgrammer”目录,安装完毕后需要重新启动。

软件正常运行时需要注册。

软件安装完成后将缺省建立Embest Tools 程序文件夹,包含执行程序和帮助的快捷方式。

2. Flash Programmer的功能⏹点击Flash Programmer图标,出现图2-25对话框,在第一行有四个一级菜单,下面分别介绍。

⏹①文件菜单⏹文件菜单用于保存、打开用户设置的编程配置数据文件,该文件一般以*.cfg形式存在。

通过文件菜单,用户还可以将已打开的编程配置数据文件里另存为其他文件,以及打开最近打开过的四个编程配置文件。

文件菜单各子菜单命令如表2-1所示。

⏹表2-1 文件菜单⏹图2-25 Flash Programmer对话框⏹②设置菜单⏹设置菜单仅包含Configure子菜单。

在Keil下如何把程序放到RAM中运行-1

在Keil下如何把程序放到RAM中运行-1

在Keil下如何把程序放到RAM中运行1.概述:有一个客户想用K60的GPIO口模拟某硬件接口的时序,为此叫我帮他把一段测试GPIO 口翻转速率的程序放到RAM中去运行,希望这样能够提高GPIO口翻转的速率。

我根据他的要求进行了试验,得到的结果虽然与开始的预期不大一样,但是仍然具有参考价值。

特此记录如下。

试验条件:硬件:MK60DN256VLL10超核开发板软件开发环境:Keil uVision 5.1系统时钟设置:使用外部50MHz晶振作为PLL参考时钟源,倍频到100MHz,各个时钟频率如下:CPU_CLK: 100MHzBUS_CLK: 50MHzFLASH_CLK: 25MHz先测试客户原始的程序,用示波器测量GPIO口,得到翻转速率为4.545MHz,波形如下图:检查程序,发现在操作GPIO口的语句中使用的是“|=”赋值语句,也就是每次操作都先读寄存器的值,然后进行修改,然后再写回到寄存器中,如下:PTD->PSOR |= (1<<GPIO_Pin_0);PTD->PCOR |= (1<<GPIO_Pin_0);因为Kinetis的GPIO口的置高和置低寄存器(即上面的PSOR和PCOR)本身就具有位操作的功能——它们只改变写入“1”的位对应的管脚状态,而不会改变写入“0”的位对应的管脚状态,所以可以把上面的语句改为直接赋值语句,如下:PTD->PSOR = (1<<GPIO_Pin_0);PTD->PCOR = (1<<GPIO_Pin_0);修改后重新测试,得到GPIO口的翻转速率为7.813MHz,波形如下图:以上两个测试,程序都还是在Flash中运行的。

接下来,我试验把程序放到RAM中运行的效果,具体步骤如下节所述。

2.放到RAM中运行:首先,修改工程的属性设置,在“Linker”页,去掉”Use Memory Layout from Target Dialog”前面的勾,然后点“Edit…”按钮编辑Keil自动生成的sct文件,如下图:在sct文件中加入一个“.relocate_code”段的定义,并把它放在RAM中,如下面红字部分:; *************************************************************; *** Scatter-Loading Description File generated by uVision ***; *************************************************************LR_IROM1 0x00000000 0x00040000 { ; load region size_regionER_IROM1 0x00000000 0x00040000 { ; load address = execution address*.o (RESET, +First)*(InRoot$$Sections).ANY (+RO)}RW_IRAM1 0x1FFF8000 0x00008000 { ; RW data*(.relocate_code).ANY (+RW +ZI)}}把翻转GPIO口的程序做成一个函数,用“#pragma arm section”编译器指令把它定位到RAM中,具体程序如下:#pragma arm section code = ".relocate_code"void FuncInRam(void){while(1){PTD->PSOR = (1<<GPIO_Pin_0);PTD->PCOR = (1<<GPIO_Pin_0);}}#pragma arm section code注意:在函数后面要用“#pragma arm section”编译器指令恢复缺省的定位,使后面的程序仍然放在FLASH中。

华为交换机如何导入flash文件

华为交换机如何导入flash文件

华为交换机如何导入flash文件遇到问题:交换机开机灯全亮,串口链接后启动出现,循环重启。

BIOS LOADING ...Copyright (c) 2008-2010 HUAWEI TECH CO., LTD.(Ver229, Aug 24 2010, 21:59:42)Press Ctrl+B to enter BOOTROM menu 0Auto-booting...Can not open Flash file: flash:/Auto-booting with last time startup file...Last time startup file is the same as current startup file!Seeking a VRP software in flash file-system...Can not find any file in flash file-system!Can not find a valid package.Auto-booting failed!Reboot...问题判断:交换机启动找不到引导falsh文件,无法进入系统,导致的循环重启。

解决思路:1.找到新的引导文件。

2.在超级终端重新写入。

解决办法:1、打开超级终端,正常串口接入,进入bootrom,Ctrl+B进入(重启动时注意看屏幕),密码是huawei。

2、进入后会出现 BOOTROM MENU1. Boot with default mode2. Enter serial submenu3. Enter startup submenu4. Display flash files5. Modify BOOTROM password6. RebootEnter your choice(1-6): 选择2,回车。

接着进入 SERIAL SUBMENU1. Update BOOTROM system /目前系统软件中已包含BootROM程序的升级文件,升级系统软件时会自动升级BootROM系统,一般不需要单独升级。

ARM9+sygwin+linux移植(nor_flash)

ARM9+sygwin+linux移植(nor_flash)

嵌入式操作系统实验实验三Linux移植—NORFlash烧写一、实验目的1、熟悉使用Cygwin模拟Linux操作环境2、练习使用Linux的基本命令3、了解NFS原理,并能够正确使用其进行文件传输4、了解并熟悉使用Make工具和Makefile5、理解Linux在ARM平台上的移植过程、详细步骤,掌握各个环节的编译烧写过程二.实验流程1、建立Linux 开发环境,Cygwin 安装1、运行Cygwin 安装程序setup.exe,然后选择“Install from LocalDirectory“,选择“下一步”,如图0-1 所示。

图1-1 Cygwin 安装2、选择Cygwin 的安装目录,注意Cygwin 的安装目录必须位于硬盘NTFS 分区(且尽量不要使用系统C 分区),否则会影响文件属性和权限操作,可能导致错误的结果。

选择Unix 文本文件类型进行安装,直接选择“下一步”后,则会把Unix 格式的cygwin 系统安装到NTFS 格式的D 分区中,且安装目录为D:\cygwin ,如图0-2 所示。

图1-2 选择安装目录图1-3 安装软件包存放目录3、选择Cygwin 安装包所在的目录,可以是光盘也可以是本地硬盘分区。

如E:/Cygwin 。

选择“下一步”继续安装,如图0-3所示。

4、选择软件安装项目。

用鼠标单击在安装项目左边“Default”字样的位置,可以调整该软件项目的安装设置,可能出现的状态有四种:Default ---该项目根据默认状态处理,可能被安装,也可能不安装Install ---安装该项目Reinstall ---重新安装该项目Uninstall ---移除该项目5、对于cygwin 的软件项目,如果完全安装可能需要1GB 以上空间,对于不想安装的项目可以选择状态为Default。

通常只选择Linux 开发必要的选项即可,特别地需要全部安装以下项目:Admin ——包括启动服务cygrunsrv 等工具,NFS 启动必备Archive ——压缩解压工具集Base ——基本的Linux 工具集Devel ——开发工具集,包括gcc、make 等开发工具Libs ——函数库Net ——网络工具集Shells ——常用Shell 工具集Utils ——包括bzip2 等实用工具集图0-4 Cygwin 软件包的选择注意:由于cygwin 是Windows 环境下虚拟的Linux 开发环境,一般在ALL 处设置为Install 状态,即全部安装。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

怎样将《嵌入式linux完全开发手册》书上的配套视频的裸板程序烧写到nandflash(使用DNW)
整理人:KPBoy qq:1056339680韦东山视频第2期团购群:218530234(团购可以优惠100元)
第2期下载地址(这3个地址里的内容是一样的,请自己选择较快的网盘):
/folder/fc007y81#
/c06bbt0sxp
/d/BXSLURWPNDUD
先下载专用播放器
(下载地址/huplayer.aspx)
用播放器打开文件后,输入用户名和密码即可
今天很多人在群里问,怎样将书上的裸板程序下载到开发板上运行,这里简单的介绍我自己的方法,希望对大家有帮助,首先在我们的开发板的norflash烧一个uboot(用百网光盘里提供的uboot),首先用jlink将uboot烧写到norflash中去(至于怎样烧写请看mini2440/tq2440开发板使用说明有介绍的),然后从norflash启动,通过uboot将程序下载到nandflash中去,下面是从norflash启动,然后选n,将程序下载到nandflash中运行,通过usb线缆和dnw软件下载(至于程序为什么下载到nandflash请看《嵌入式linux完全开发完全手册》书上86页5.2.3实例测试章节的说明)
DNW的的ADDR设置为0x0,接上usb,显示usb:ok
上图黑色部分,显示lcd.bin 已经被下载到nandflash 中去了然后从nandflash 启动,可以看到如下图
接上来我们就可以测试对LCD进行测试了。

相关文档
最新文档