使用JLink烧写bin文件到Mini2440

简介:
    我自己有一个Mini2440的板子,我学习了Bootloader这一节,想做一下实验。
    很可惜,我只有笔记本电脑,不带并口的。不过我有一个JLinkV8,听网友们说可以有它来下载程序。
 
    网上有不少的文章讲如何使用JLink烧程序到Mini2440,我总结了一下,主要的步聚如下:
    (1)下载init.bin文件,并运行。它能将SDRAM配置好。
    (2)下载u-boot.bin文件到SDRAM内存地址上,并运行它。
    (3)使用u-boot命令将自身写到NandFlash或NorFlah。
 
    首先要安装JLink驱动,然后就是正确的连线,最后是给Mini2440上电。
打开J-Link Commander。
    
    以上显示,是正常连接的。
 
    我在网上下载了一个init.bin文件。 init.zip  提取其init.bin文件。
    下面我简单讲一下,我用到的几个jlink命令:
  • r -- reset, 复位命令
  • h -- halt, 停机,也有暂停的功能
  • loadbin <filename> <address> -- 下载filename文件到地址上address
  • setpc <address> -- 设置PC的值
 
在执行J-Link命令之前,先执行:
     > speed 12000
     提高通信速度,不然后面下载程序会很慢。
 
(1)下载init.bin文件,在J-Link Commander执行以下命令:
     > r
     > h
     > loadbin e:\init.bin 0x40000000
     > setpc 0x40000000
     > g
     执行完上述命令之后,我们的目标板就从0x40000000地址上开始执行。如果看到Mini2440板子上的4个LED开始闪烁,那就说明init.bin程序在目标板中运行起来了。
     这里我有一个问题,为什么要下载到0x40000000地址上呢?既然不是SDRAM,这个地址上是什么存储器?请大师解答
 
(2)然后下载我们的u-boot.bin文件到SDRAM中进行运行。
     > h
     > loadbin e:\u-boot.bin 0x33f80000
     > setpc 0x33f80000
     > g
     这里我说明一下为什么是0x33f80000,因为在U-Boot中已定义了U-Boot终端是运行在这个地址。执行完J-Link命令之后,我们就听到一声蜂鸣器声,并可以在Mini2440连出来的串口终端上看到U-Boot输出的信息:
    
     这已说明刚下载的U-Boot已经运行起来了。
 
(3)接下来,就是用U-Boot将自己写入NandFlash或NorFlash
     首先,重新导入u-boot.bin文件到0x30000000地址上。
     > h
     > loadbin e:\u-boot.bin 0x30000000
     > g
 
     然后,就是在串口终端中输入Uboot命令,将0x30000000内存的数据分别写入NandFlash或NorFlash。
 
     我只完成了将U-Boot烧入NandFlash的操作,至于NorFlash遇到了点麻烦。
     我先讲NandFlash。如下图所示,输入命令:
     
 
     然后拔了J-Link,选择NandFlash,重新启动。就会在串口终端看到NandFlash的启动信息。
     
 
    以上是NandFlash的烧录,下面我讲述一下烧写NorFlash的过程。与NandFlash的烧录过程差不多,只有U-Boot命令不一样:
    
    错误应该出现在“erase 0 3ffff”命令上。看网友执行的结果不是这样的。请大师指点一下…… 
目录
相关文章
|
监控 NoSQL
JLink + GDB 调试方法
本节主要介绍嵌入式开发中常用的JLink+GDB调试方法。 调试所需软件 J-link,可以从https://www.segger.com下载对应操作系统的软件包,然后安装(注意:segger是仿真器的名字,相当常用的一款,仿真器的接口也是固定的,一般开发版上都会带有这个调试接口,如图) 运行JLinkGDBServer 按照上图中的配置,配置GDBServer,然后点击OK,进入下一个界面 注意,如果硬件连接没有问题,那么上图中的J-Link和 Device栏中显示绿色,GDB显示为红色,因为我们还没有运行GDB软件。
8610 46
|
芯片
STM32使用HAL库实现RS485通讯(全双工串口)
STM32使用HAL库实现RS485通讯(全双工串口)
1999 0
|
Dart 小程序 API
鸿蒙原生开发手记:01-元服务开发
元服务是鸿蒙系统中的一种轻量级应用形态,无需下载即可直接运行,类似于微信小程序但更轻量。使用原生开发,性能和体验更优。创建元服务需使用 DevEco 工具,支持深色模式和服务卡片功能,开发测试和上架流程详见相关文档。
700 0
鸿蒙原生开发手记:01-元服务开发
|
网络安全 Docker 容器
VScode远程服务器之远程 远程容器 进行开发(五)
VScode远程服务器之远程 远程容器 进行开发(五)
415 1
|
消息中间件 监控 大数据
"探索Streaming技术:如何重塑大数据未来,实时处理引领数据价值即时转化新纪元"
【8月更文挑战第10天】信息技术高速发展,数据成为推动社会进步的关键。面对数据爆炸,高效实时处理成挑战。流处理(Streaming)技术应运而生,即时处理数据流,无需积累。应用于实时监控、日志分析等场景。例如,电商平台利用流处理分析用户行为,推送个性化推荐;智能交通系统预测拥堵。结合Apache Kafka和Flink,实现从数据收集到复杂流处理的全过程。流处理技术促进数据即时价值挖掘,与AI、云计算融合,引领大数据未来发展。
374 5
|
Go 内存技术
【Jlink】JLink Commander调试方法
上面的信息连可以看到当前运行的PC指针,再可以结合生成的map文件,就可以看到当前运行的函数。例如上面运行的PC指针为0x01000E72,下图是固件的map文件,查看map文件对应地址的函数为SEGGER_RTT_Write。用来读取内存的数据,参数为内存的地址和读取的长度。也可以直接用mem命令按照8位来读取。常用的命令有halt,go,mem(mem8,mem16, mem32), write(write1, write2, write4 )用来写入对应的内存地址,参数为内存的地址和写入的数据。
3207 45
【Jlink】JLink Commander调试方法
【51单片机】一文带你利用【Keil软件的模板功能】【自定义模板】简化操作(带图详解)
【51单片机】一文带你利用【Keil软件的模板功能】【自定义模板】简化操作(带图详解)
|
存储 Linux 内存技术
深入理解bootargs
深入理解bootargs
1013 0
|
消息中间件 设计模式 Java
如何高效地阅读源码,我总结了18条心法,助你修炼神功
大家好,我是三友~~ 这篇文章我准备来聊一聊如何去阅读开源项目的源码。 在聊如何去阅读源码之前,先来简单说一下为什么要去阅读源码,大致可分为以下几点原因: - 最直接的原因,就是面试需要,面试喜欢问源码,读完源码才可以跟面试官battle - 提升自己的编程水平,学习编程思想和和代码技巧 - 熟悉技术实现细节,提高设计能力 - ...
如何高效地阅读源码,我总结了18条心法,助你修炼神功
|
Linux C语言 SoC
设备树知识小全(二)
设备树知识小全(二)
439 0