S3c2440如何利用JLINK烧写U-boot到NAND Flash中

发布者:星尘之泪最新更新时间:2018-07-22 来源: eefocus关键字:S3c2440  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是可以像内存SDRAM一样直接操作,但是NAND Flash必须操作nand的控制器。


一、方法一,利用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是否连接正常)。/* 此时SDRAM已经初始化好了 */

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

执行命令方式如下:

h   

speed 12000               //设置TCK为12M,下载程序时会很快 
loadbin d:\u-boot.bin 0x30000000     //注意:0x30000000是你想要下载u-boot.bin到开发板的内存地址,内存地址根据不同的开发板设定不同,因为本文中使用的是FL2440,片上系统是S3C2440,内存挂载的地址区域是0x30000000~0x33ffffff,我们只需要把u-boot.bin下载到这片区域即可, 

 

然后我们在U-boot命令行模式输入NAND Flash擦除和写入命令即可:

nand erase 0 40000   //擦除从0地址开始的大小为0x40000的Nnad Flash扇区,0x40000是待写入的U-boot.bin的大致长度,长度必须为NAND Flash页大小的整数倍,通常会需要比u-boot.bin实际长度。

nand write 30000000 0 40000   // 把前面下载到0x30000000的u-boot.bin烧写到Nand的 0 ~40000 


  二、方法二,直接通过JLink

        假如你的开发板没有NOR Flash或者是你使用的NOR Flash还未被J-FLASH ARM所支持,这时上面的方法你就无法使用了,这时候你需要一个初始化内存SDRAM的程序,这个程序完成的功能也就是配置好SDRAM的寄存器,使它能正常工作,fl2440的内存初始化程序下载地址:“2440init.bin”。你还需要准备一个特殊的u-boot_SDRAM.bin,它与你要烧写到NAND Flash的u-boot.bin有区别,u-boot_SDRAM.bin编译时需要在include/configs/fl2440.h文件中添加:

#define  CONFIG_SKIP_LOWLEVEL_INIT     1 //用来支持uboot在内存中直接运行  跳过底层初始化 。添加这个宏定义之后,U-boot就跳过了内存初始化的部分,因为此时我们的内存已经先由“2440init.bin“初始化好了,再次初始化会出现内存数据的丢失。

   做好上面的准备工作之后,首先将开发板设为从NAND Flash启动,启动J-Link commander,先假设“uboot.bin”和“2440init.bin”,"u-boot_SDRAM.bin"在电脑的D盘根目录下。

speed 12000
loadbin d:\2440init.bin  0      /* 初始化SDRAM的程序,就是U-boot的start.S修改的 */
setpc 0  

g

 h 

  为什么需要把"2440init.bin"复制到0x0地址是因为S3C2440有4K的SRAM,它不需要初始化就可以直接执行程序,从NAND Flash启动时,这个SRAM的地址会挂载到0x0~0x1000的地址空间,我们先把"2440init.bin"复制到SRAM中运行,执行这部分后S3C2440的SDRAM内存就初始化好了(地址空间0x30000000~0x33ffffff)。也许有人会说为什么不一开始就把u-boot_SDRAM.bin放在SRAM中运行啊?SRAM只有4K的大小,而U-boot通常在100~300K,SRAM的空间显然不够,而"2440init.bin"的大小只有不到2K,它可以在SRAM中运行。

内存初始化成功后,下载特制的u-boot_SDRAM.bin

loadbin d:\u-boot.bin 0x30000000     //用来临时存放数据,存放的是真正的u-boot.bin

loadbin d:\u-boot_sdram.bin 0x33f80000           / /0x33f80000 是把U-boot放在SDRAM内存最上面的512k的空间
setpc 0x33f80000                                      /* 启动我们跳过底层初始化的u-boot.bin */
g                                                                 //TEXT_BASE = 0x33F80000

      这时你应该可以在串口看到U-boot的输出信息了,然后我们在U-boot命令行模式输入NAND Flash擦除和写入命令即可:

nand erase 0 40000  //
nand write 30000000 0 40000  //把前面下载到0x3000000的u-boot.bin下载NAND

   根据上面的步骤就可以完成u-boot到NAND Flash的烧写了,实际上是利用一个SDRAM中运行的u-boot去烧写u-boot.bin到NAND Flash中。


关键字:S3c2440  JLINK  烧写U-boot  NAND  Flash 引用地址:S3c2440如何利用JLINK烧写U-boot到NAND Flash中

上一篇:关于S3C2440开发板Nand flash程序烧写和运行的一些理解
下一篇:S3C2440开发板文件传输

推荐阅读最新更新时间:2024-03-16 16:09

Error: Flash Download failed - “Cortex-M0“
我在用Keil uVision5(MDK V5)调试一个STM32F030的板子,用ST-Link的SWD模式下载程序时弹出窗口,调试Error: Flash Download failed - Cortex-M0 。我的板子上的STM32F030单片机是从另外一个板子上换过来的,之前有烧写过程序。而且之前的程序设置的是外部晶振,现在的板子上是没有晶振的,当前程序是设置为内部晶振。 烧写不进去,参考了一些网上的解决方法,MDK里面相关的FLASH地址等设置是没问题的。最后的解决方法是:先用ISP下载模式烧写一遍新程序。ISP下载模式就是上电前将单片机的BOOT0引脚拉高,然后通过串口1下载程序,ST官方有多各ISP下载软件,我
[单片机]
STM32 SPI Flash DFU
这次讲的是将程序、图片或其他文件下载到SPI Flash中。我使用的是W25X16的SPI Flash,他共有2MB空间,2个Block,512ge Sector,8096个Page。由于SPI Flash不能直接跑程序,我们从接口就知道了。 接下去我们就来讲讲怎么编写SPI flash的升级功能。这次的工程是基于之前的Internal Flash修改而来的。修改的部分主要在USB_User组里: STM32 SPI Flash DFU - ziye334 - ziye334的博客我只将改改的部分。 hw_config.c、usb_istr.c、usb_prop.c、usb_pwr.c这介个文件没有什么还修改的。usb_desc.
[单片机]
U-boot-2014.04移植到MINI2440(8) nand flash 读写支持移植
上一篇帖子分析了nand flash,这篇帖子开始移植u-boot对nand flash的读写支持,进入正题。 一.修改mini2440.h 之前再初步移植的时候注释掉了nand的相关部分,这里再打开,在mini2440.h的第96行: #define CONFIG_CMD_NAND 既然打开了nand的配置,就需要在nand configuration里面做配置,在mini2440.h里面只有s3c2410的,这里需要进行添加,在第187行,红色字体为添加进去的部分: /* *NAND configuration */ #ifdef CONFIG_CMD_NAND #ifde
[单片机]
U-boot-2014.04移植到MINI2440(8) <font color='red'>nand</font> <font color='red'>flash</font> 读写支持移植
s3c2440的uart知识点
s3c2440的uart和stm32、51的uart都是大同小异的。但是还是专门写一下。其实是自己作总结而已。(本文只是涉及uart的基本情况,程序的话,只有查询模式。fifo、中断、DMA还没学,后面可能会补上) 以下是它的特点: s3c2440有三个独立的uart模块,都支持查询、中断模式或者DMA模式。 这三个uart都可以选择(非)fifo模式。Fifo适用于大规模数据传送,可能在DMA需要用到。 uart0和uart1可支持自动流控制(Auto Flow Control)模式,用来检测是否可用。有特殊的位的对应引脚。(但好像stm32的uart功能更多点,深入学习后作比较) 时钟来源和时钟频率的设定 uart的时
[单片机]
<font color='red'>s3c2440</font>的uart知识点
利用F206片内Flash进行在线编程
  引言   TMS320F206(简称F206)是德州仪器公司一种较新型的高性能数字信号处理器芯 片,采用静态CMOS工艺技术设计,功耗低、抗干扰能力强。其结构简单,指令执行速度快(单周期指令的执速度为50ns),指令的源代码与C1XX和C2XX系列保持兼容并且向上兼容TI公司的第5代DSP(C5X系列)。同时,F206处上集成的16位的Flash存储器由二块相互独立的16位的Flash存储器组成(Flash0和Flash1),可分别独立地对它们进行读取、擦除和编程等操作。第二块Flash工作模式的切换分别由片上2个I/O映射寄存器控制。通常情况下,这二块Flash存储器,一块用于存放固化程序,程序调试完成后通过DSP仿真头将
[嵌入式]
为什么STM32的Flash地址要设置到0x08000000
我们言简意赅的普及下这个知识点,争取让大家不伤脑细胞 一、背景知识: M3,M4内核芯片上电复位后,要固定从0x0000 0000地址读取中断向量表,获取复位中断服务程序的入口地址后,进入复位中断服务程序,其中0x0000 0000是栈顶地址,0x0000 0004存的是复位中断服务程序地址。 ARM官方回复: Documentation – Arm Developer 二、引出问题: 既然ARM规定了M3,M4内核要从地址0x0000 0000读取中断向量表,而STM32设置Flash地址到0x0800 0000怎么办? STM32支持了个内存重映射功能,将地址0x0800 0000开始的内容重映射
[单片机]
为什么STM32的<font color='red'>Flash</font>地址要设置到0x08000000
基于ARM9的远程图像无线监控系统的设计
对图像监控系统,用户常常提出这样的功能需求:希望能够监控距离较远的对象。这些对象有可能分布在郊区、深山,荒原或者其他无人值守的场合;另外,希望能够获取比较清晰的监控图像,但对图像传输的实时性要求并不高,很明显,用传统的PC机加图像采集卡的方式很难满足这样的需求。 在嵌入式领域,ARM9系列微处理器在高性能和低功耗方面提供了最佳的性能,因此选用ARM9嵌入式处理器S3C2440设计实现了一个远程图像光线监控系统通过这个系统,可以远在千里之外控制一个摄像机进行图像采集并回传。如果这个摄像机有一个485接口的云台,还可以通过互联网远程控制摄像机的取景角度、镜头拉伸、聚焦等功能. 除了获取图像数据.系统还提供了多路开关控制
[单片机]
S3c2440ARM异常与中断体系详解8---定时器中断程序示例
这节课我们来写一个定时器的中断服务程序 使用定时器来实现点灯计数 查考资料就是第10章PWM TIMER 我们先把这个结构图展示出来 这个图的结构很好 这里面肯定有一个clk(时钟), 1 、每来一个clk(时钟)这个TCNTn减去1 2、 当TCNTn == TCMPn时,可以产生中断,也可以让对应的SPWM引脚反转,(比如说原来是高电平,发生之后电平转换成低电平) 3、 TCNTn继续减1,当TCNTn == 0时,可以产生中断,pwm引脚再次反转 TCMPn 和 TCNTn的初始值来自TCMPBn,TCNTBn 4 、TCNTn == 0时,可自动加载初始 怎么使用定时器? 1、 设置时钟 2 、设置初值 3
[单片机]
S3c2440ARM异常与中断体系详解8---定时器中断程序示例
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved