Jlink下载u-boot
由于各种原因我的fl2440无启动代码,无任何程序,这时要通过jlink来烧录相关boot程序。
准备工作:
1、Jlink使用jlink commander工具
2、初始化sdram的程序boot.bin
3、运行SDRAM的程序或者bootloader 这里使用u-boot_sdram.bin(至少包含nand擦写烧录和程序加载)
4、正常的u-boot程序u-boot.bin(这里使用的是u-boot-2013.10的版本,这个版本之后的相关配置使用了linux一样配置方法,功能差不多)
Bootloader(u-boot)设计启动原理步骤:
1、由于fl2440-I 只提供了nand flash启动,因此cpu启动是本身会把nand flash前4K代码copy到内部sram,并从sram 的0x00000000地址开始执行。
2、通过内部sram的前4K代码完成对nand flash里u-boot程序的读取,并设置pc跳转到正常的u-boot运行。(在编写正常u-boot时要确保前4k代码能正常,即使用位置无关的代码,函数调用bl等)
3、在u-boot里对相关内核参数设置或者维护操作处理。
BootLoader启动原理知道后,就应该知道内部4k sram必须要有启动代码。现在板子是白片,所以要用jlink给内部sram烧录程序。
步骤如下:
1.连接后打开j-link commander,第一次键入connect命令之后一直按enter键确定到正常模式

2.使用loadbin命令下载boot.bin到0x0开始处

3.设置pc到0x00处使用命令setpc 0,使用g命令开始运行程序

4.因为我的boot.bin里初始化了sdram为后期烧录u-boot_sdram.bin使用。在这里我点亮了一个灯方便调试。使用halt命令将cpu停掉。并使用loadbin命令将u-boot_sdram.bin烧录到0x32000000处。最后跳转到0x32000000处运行u-boot进行下一步操作。
这个u-boot_sdram.bin实现了nand flash的烧写和串口的通讯并且定位到0x32000000

5.进入u-boot程序截图如下:

6.在u-boot下使用loady 31000000命令超级终端的ymodem协议把程序加载到sdram这里我加载到0x31000000,注意不要覆盖你sdram里面的u-boot

7.使用命令nand erase 0 10000 擦除nand,和命令nand write 31000000 0 10000烧录自己的u-boot到nand里,reset命令即可进入新的u-boot的。此后nand里面就有相关的u-boot程序了。

8.新的u-boot如下:

其中boot.bin的程序如下使用汇编处理 u-boot_sdram.bin以附件给出https://files.cnblogs.com/files/stardream/boot_u-boot_sdram_bin.7z。
只针对fl2440
@start.s
.equ WTCON, 0x53000000
.equ BWSCON, 0x48000000
.equ CLKDIVN, 0x4c000014
.equ MPLLCON, 0x4c000004
.equ GPBCON, 0x56000010
.equ GPBDAT, 0x56000014
.text
.global _start
_start:
bl close_watch_dog
bl set_clock
bl init_sdram
ldr sp, =0x32000000
ldr lr, =loop_halt @设置返回地址
loop_halt:
b loop_halt
close_watch_dog:
ldr r0, =WTCON
mov r1, #
str r1, [r0]
mov pc, lr
set_clock:
ldr r0, =CLKDIVN
mov r1, #0x05 // FCLK:HCLK:PCLK=::, HDIVN=,PDIVN=
str r1, [r0]
mrc p15, , r1, c1, c0, /* 读出控制寄存器*/
orr r1, r1, #0xc0000000 /* 设置为“asynchronous bus mode?*/
mcr p15, , r1, c1, c0, /* 写入控制寄存器*/
ldr r0, =MPLLCON
ldr r1, =((0x5c<<)|(0x01<<)|(0x01)) //MPLL_400MHZ
str r1, [r0]
/* 启动ICACHE */
mrc p15, , r0, c1, c0, @ read control reg
orr r0, r0, #(<<)
mcr p15, , r0, c1, c0, @ write it back
mov pc, lr
init_sdram:
/*gpiob */
ldr r0, =GPBCON
mov r1, #0x00
bic r1,r1, #((<<) | (<<))
orr r1,r1, #((<<) | (<<))
str r1, [r0]
ldr r0, =GPBDAT
mov r1, #0x00
bic r1,r1, #(<<)
str r1, [r0]
/* 如果程序在sdram里,那么就不初始化了 */
adr r0, _start
ldr r1, =0x30000000
cmp r0, r1
beq 2f
mov r0,#BWSCON
adrl r1,mem_cfg_val
@STr [r1],[r0],#
mov r4, #
:
ldr r3, [r1], #
str r3, [r0], #
add r4, #
cmp r4, #
bne 1b
:
ldr r0, =GPBDAT
mov r1, #0x00
bic r1,r1, #(<<)
str r1, [r0]
b . @stop here
mov pc, lr
.align
mem_cfg_val:
@ 存储控制器13个寄存器的设置值
.long 0x22011110 @ BWSCON
.long 0x00000700 @ BANKCON0
.long 0x00000700 @ BANKCON1
.long 0x00000700 @ BANKCON2
.long 0x00000700 @ BANKCON3
.long 0x00000700 @ BANKCON4
.long 0x00000700 @ BANKCON5
.long 0x00018005 @ BANKCON6
.long 0x00018005 @ BANKCON7
.long 0x008C07A3 @ rEFrESH
.long 0x000000B1 @ BANKSIZE
.long 0x00000030 @ MrSrB6
.long 0x00000030 @ MrSrB7
Jlink下载u-boot的更多相关文章
- Kinetis Design Studio 下使用J-Link下载程序
1.安装J-Link驱动. 在KDS安装目录下已自带J-Link驱动,进入以下目录(以我的为例): C:\Freescale\KDS_1.1.1\segger\USBDriver 将看到CDC.x64 ...
- 图解Stm32使用jlink下载程序时jtag接口(SW和JTAG模式)的简化方法
转自: http://www.it165.net/embed/html/201308/2332.html 用过stm32的人都知道stm32有两种常用下载程序的方法,用串口和jlink.串口下载方法和 ...
- 痞子衡嵌入式:MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项(i.MXRT500为例)
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是MCUXpresso IDE下使用J-Link下载算法在Flash调试注意事项. 痞子衡前段时间写过一篇小文<为i.MXRT设计更 ...
- JLINK下载出现问题
JLINK 下载报错: RAM CHECK FAILED 说法一: 有一种说法是版本的问题 http://tieba.baidu.com/p/1902940329?red_tag=d180765763 ...
- 龙邱STM32单片机用J-LINK下载无法被识别的解决方法
问题如下: 按照正常步骤使用keil5给龙邱的stm32下载程序,SWD下载方式提示no cortex-m sw device found,JTAG方式提示no cortex-m device fou ...
- Jlink下载问题
在使用Jlink SWD模式进行下载的时候遇到了无法下载的问题. SWD模式下,共有4跟线,VCC.GND.SWCLK.SWDIO JTAG标准接口如下图所示: 一般情况下,目标板卡的 debug V ...
- java代码自动下载Spring Boot用户手册
本示例演示Spring Boot 1.5.9.RELEASE版本的用户手册下载 pom.xml <?xml version="1.0" encoding="UTF- ...
- 【转】【JLINK下载失败,STLINK下载失败万能解决方案】JLINK和STLINK都无法下载时的解决办法,此时芯片并没有报废
很多时候都会认为这个板子无法下载了,其实不是的,有解决办法. 原因如下: 由于客户设置的晶振频率和PLL配置错误时,就会出现这种问题,下载一次程序锁住一次板子,搞的人痛不欲生. 还有错误的外设配置,S ...
- MDK5使用Jlink下载显示 no cortex m sw divice 解决办法
问题: (1)下面界面中找不到设备 (2)下载程序的时候提示" no cortex m sw divice " 然后是"target dll has been cance ...
随机推荐
- thinkphp 3.2中依靠关联模型来关联三个表
这里说的是用thinkphp3.2关联模型关联三个表 根据用户表查询出三个表的数据,需要两个model来配合,第一个model是根据user表来查询到班级的信息,然后第二个model是根绝banji中 ...
- Spark 推送数据至 elasticsearch
1.工程依赖 <properties> <spark_version>2.3.1</spark_version> <!-- elasticsearch--&g ...
- 讯为iTop4412嵌入式开发板学习之-------前言
一.linux 工作的分类以及培养时间 Linux 作为一个庞大的体系,有很多相关的研究领域,总结起来大致有五个方向: 1.服务器维护:需要了解 Linux 服务,熟练使用 Shell,了解网络配置. ...
- Jetson tx1 安装cuda错误
前两天安装Jetpack3.0的时候,看着网上的教程以为cuda会自动安装上,但是历经好几次安装,都安装不上cuda,也刷了好几次jetpack包.搜遍了网上的教程,也没有安装上.错误如下图所示: 这 ...
- 深度学习(deep learning)优化调参细节(trick)
https://blog.csdn.net/h4565445654/article/details/70477979
- 当我们访问不了虚拟机上ip上的web页面,是因为在window上要添加映射
在主机上添加映射步骤 1.打开C盘 注意:用nopedata++打开 保存即可!
- HBase全网最佳学习资料汇总
HBase全网最佳学习资料汇总 摘要: HBase这几年在国内使用的越来越广泛,在一定规模的企业中几乎是必备存储引擎,互联网企业阿里巴巴.百度.腾讯.京东.小米都有数千台的HBase集群,中国电信的话 ...
- netty源码分析系列文章
netty源码分析系列文章 nettynetty源码阅读netty源码分析 想在年终之际将对netty研究的笔记记录下来,先看netty3,然后有时间了再写netty4的,希望对大家有所帮助,这个是 ...
- wirehshark解密IPSEC流量
wireshark解密IPSEC加密过的流量 题目是安恒二月月赛题目:简单的流量分析 1.首先会发现很多esp类型的流量 我们不知道密钥就没有办法解密,猜测密钥肯定是在流量包里面的. 加密流量在786 ...
- 爬取图片过程遇到的ValueError: Missing scheme in request url: h 报错与解决方法
一 .scrapy整体框架 1.1 scrapy框架图 1.2 scrapy框架各结构解析 item:保存抓取的内容 spider:定义抓取内容的规则,也是我们主要编辑的文件 pipelines:管道 ...