很多同学使用笔记本作为自己的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. speed 12000//设置TCK为12M,下载程序时会很快

2. 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去

然后我们再设置开发板从NAND Flash启动即可。

二、方法二,直接通过JLink

假如你的开发板没有NOR Flash或者是你使用的NOR Flash还未被J-FLASH ARM所支持,这时上面的方法你就无法使用了,这时候你需要一个初始化内存SDRAM的程序,这个程序完成的功能也就是配置好SDRAM的寄存器,使它能正常工作,fl2440的内存初始化程序下载地址:“2440init.bin”。(很短的程序,初始化SDRAM的寄存器,使得SDRAM能正常工作)

下载在Linux公社的1号FTP服务器里,下载地址:

用户名:www.linuxidc.com

密码:www.muu.cc

在 2012年LinuxIDC.com\7月\如何利用JLINK烧写U-boot到NAND Flash中

你还需要准备一个特殊的u-boot_SDRAM.bin,它与你要烧写到NAND Flash的u-boot.bin有区别,u-boot_SDRAM.bin编译时需要在include/configs/开发板配置文件.h文件中添加:

#define  CONFIG_SKIP_LOWLEVEL_INIT     1 //用来支持uboot在内存中直接运行

添加这个宏定义之后,U-boot就跳过了内存初始化的部分,因为此时我们的内存已经先由“2440init.bin“初始化好了,再次初始化会出现内存数据的丢失。

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

loadbin d:\2440init.bin 0

setpc 0

g

为什么需要把"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:

h

loadbin e:\u-boot_SDRAM.bin 0x33f80000

setpc 0x33f80000

g

这时你应该可以在串口看到U-boot的输出信息了,然后我们在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去

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

jlink烧写linux内核,如何利用JLINK烧写U-boot到NAND Flash中相关推荐

  1. 用JLINK烧写U-boot到Nand Flash中

    很多同学使用笔记本作为自己的ARM开发和学习的平台,绝大多数笔记本都没有并口,也就是无法使用JTag调试和烧写程序到Nand Flash中,幸好我们还有JLINK,用JLINK烧写U-boot到Nor ...

  2. JLINK烧写U-boot到NAND Flash中

    http://www.linuxidc.com/Linux/2 很多同学使用笔记本作为自己的ARM开发和学习的平台,绝大多数笔记本都没有并口,也就是无法使用JTag调试和烧写程序到Nand Flash ...

  3. 裸板烧写linux内核,嵌入式linux学习(二):烧写裸板进程

    8种机械键盘轴体对比 本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选? 用了两种方式烧写裸板 1.使用J-link烧写uboot,然后再使用uboot烧写其他进程1)J-link只能烧写Nor ...

  4. 嵌入式烧写Linux内核,嵌入式linux 内核和根文件系统烧写方式简介

    总体来说,嵌入式Linux内核和根文件的引导与PC机差不多. 嵌入式linux内核和根文件系统可以存放在各种可能的存储设备中,一般情况下我们将内核和根文件系统直接烧入到Flash中(包括NOR和NAN ...

  5. uboot通过u盘烧写linux内核,向Flash中烧写uboot和linux操作系统

    向Flash中烧写uboot和linux操作系统 2011年03月28日 向Flash中烧写uboot和linux操作系统 ====================================== ...

  6. 获取linux内核基址,Linux内核漏洞利用技术:覆写modprobe_path

    0x00 前言 如果大家阅读过我此前发表的Linux内核漏洞利用的相关文章,可能会知道我们最近一直在学习这块内容.在过去的几周里,我的团队参加了DiceCTF和UnionCTF比赛,其中都包括了Lin ...

  7. U-Boot启动流程(Linux内核)的分析(写得好)

    前面一段时间一直在移植U-Boot,Linux内核和构建根文件系统,其中有些地方还不是很明白,现在回过头来,理解一下U-boot的启动流程,以及 u-Boot是如何加载引导内核启动的.这里的分析也都是 ...

  8. sd卡烧写linux内核,uboot从SD卡烧写内核和文件系统

    环境:ubuntu 13.04 一.首先制作sd启动盘: 插入SD卡 sudo dd iflag=dsync oflag=dsync if=tiny210v2-uboot.binof=/dev/mmc ...

  9. 裸板烧写linux内核,嵌入式 hi3518c裸板uboot烧写、kernel烧写、fs烧写小结

    1.在uboot中我可以添加自己的命令,添加的方法是找到一个uboot的命令,然后模仿着去增加属于自己的命令代码以及实现函数就可以 2.记住在使用printf进行调试的时候,在遇到指针或者字符串的时候 ...

最新文章

  1. C语言输入一个任意数求各位数的和
  2. Web前端求职时都会被问到的Redis面试题分享
  3. php如何获取ajax请求,php-从ajax调用获取json数据
  4. AIOps中异常检测的简单应用
  5. mac电脑上的效率工具:alfred 4
  6. 洛谷 P4147 玉蟾宫 (最大子矩形问题)
  7. docker 学习之使用dockerfile 创建镜像遇到的坑
  8. 一个共享XP、2003上文件与打印机简单易行的方法
  9. 《炬丰科技-半导体工艺》 光学镜片和玻璃部件的超声波清洗
  10. java8 匿名内部类的前生今世
  11. 华为 MA5800设备防盗
  12. CSP201609-3炉石传说
  13. Windows设备与驱动器管理
  14. mysql双主架构沈剑_58 沈剑 - 数据库架构师做什么-58同城数据库架构设计思路
  15. 2 路 FULL Cameralink 视觉检测 BOX
  16. 雷军:同事格式化了我的电脑,让我走上当CEO的“不归路”
  17. 怎么做成html网页,html网页制作的基本步骤?怎么用html做一个网页?
  18. 总结关于thinkphp中where查询条件的设置
  19. 黑苹果社区2019年10月1日限时免费注册
  20. 海外大火,国内鲜有耳闻,多功能料理机是否存在“水土不服”的问题?

热门文章

  1. 山东标梵网站制作项目启动流程详解
  2. canvas初识及其简单使用
  3. Linux信号量(3)-内核信号量
  4. 大二单片机笔记,串口通信代码【郭天祥】【700字】【勿笑】【原创】
  5. 苹果笔记本安装双系统windows7,无法分区
  6. 阅读Decoupled Spatial-Temporal Attention Network for Skeleton-Based Action Recognition
  7. 运动世界校园 校园跑 不想跑步人的福利
  8. CentOS 7 Docker安装GVM-11
  9. window10企业版永久密钥激活
  10. 【规律】Hzy's Rabbit Play