U-boot中控制台命令
u-boot学习笔记如下:
用j-link commder 烧写nand flash(只能借助sdram来间接烧写)
nand flash启动时候,我们接着s3c2440芯片内部的sram来烧写。
r h
speed 12000
loadbin d:\2440init.bin 0 (初始化sdram的程序)
setpc 0 g h
loadbin d:\u-boot.bin 0x30008000
loadbin d:\u-boot_SDRAM.bin 0x33f80000
setpc 0x33f80000 g
用j-flash arm 烧写nor flash
第一 :打开一个工程配置文件,
第二 :打开要下载的文件,选择地址0
第三 :target->Auto
make distclean && make jz2440_config && make
setenv bootcmd 'nand read 0x30008000 0x60000 0x400000; bootm 0x30008000'
set bootargs console=ttySAC0,115200 root=/dev/mtdblock3
挂在虚拟机上的文件系统
setenv bootargs console=ttySAC0,115200 noinitrd root=/dev/nfs rw nfsroot=192.168.1.2:/home/yanghao/nfs/rootfs ip=192.168.1.4:192.168.1.2:192.168.1.1:255.255.255.0::eth0:off
set machid 16a @set machine id
mkimage -n 'linux-3.4.2' -A arm -O linux -T kernel -C none -a 0x30108000 -e 0x30108000 -d zImage uImage
Nor flash :
nfs 30008000 172.16.150.157:/work/nfs_root/u-boot.bin
protect off all
erase 0 0x7FFFF
cp.b 0x30008000 0 40000
tftpboot 0x30008000 210.41.141.98:lcd.bin
nand erase 0 0x40000 ; nand write 0x30008000 0 0x40000
tftpboot 0x30008000 210.41.141.98:u-boot.bin
nfs 30008000 210.41.141.155:/work/nfs_root/u-boot.bin
nand erase 0 0x60000 ;nand write 0x30008000 0 0x40000
nfs 30008000 172.16.150.157:/work/nfs_root/uImage
nand erase 0x60000 0x460000;nand write 0x30008000 0x60000 0x400000
nfs 30008000 172.16.150.157:/work/nfs_root/root_fs.bin
nand erase 0x460000 0x10000000;nand write.yaffs2 0x30008000 0x460000 $(filesize)
mount -t nfs -o nolock,vers=2 172.16.150.157:/work/nfs_root/ /mnt
bdinfo @display board information
nand info @display flash message
nand read [Memory address] [flash address] [length]
nand write [Memory address] [flash address] [length]
nnad erase [flash start address] [flash end address]
nand scrub
下载u-boot.bin到0x30008000 运行的地方时是kernel中指定的,默认的是
Load Address: 30108000
Entry Point: 30108000
这个地址只能在u-boot.bin的后面,大小大约为4m。mkimage中会吧u-boot.bin移动
到自己本身该运行的地址。
换新的交叉编译环境:
tar -xjvf arm-linux-gcc-4.3.2.tar.gz -C /
echo $PATH @view path
方法一:
vi /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin"
方法二:
vi /etc/profile
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/arm/4.3.2/bin"
source /etc/profile
开始移植u-boot:
第一阶段建立基本的框架:
tar -xjvf u-boot-2010.09.tar.bz2
cp include/configs/smdk2410.h cp include/configs/jz2440.h
cp board/samsung/smdk2410 board/samsung/jz2440 -r
mv board/samsung/smdk2410.c board/samsung/jz2440.c
vi board/samsung/Makefile +28
smdk2410.o 修改成jz2440.o
vi boards.cfg +241
smdk2410 arm arm920t - samsung s3c24x0
jz2440 arm arm920t - samsung s3c24x0
make jz2440_config
make
第二阶段配置时钟,sdram
vi arch/arm/cpu/arm920t/start.S
@ bl coloured_LED_init
@ bl red_LED_on
#define MPLLCON 0x4C000004
# if defined(CONFIG_S3C2440)
ldr r1, =0x7fff
ldr r0, =INTSUBMSK
str r1, [r0]
# endif
@mov r1, #3
mov r1, #5
mrc p15, 0, r1, c1, c0, 0
orr r1, r1, #0xc0000000 @asynchronous
mcr p15, 0, r1, c1, c0, 0
ldr r0, =MPLLCON
ldr r1, =0x7F021 @400MHZ
str r1, [r0]
#define BWSCON 0x48000000 @检测是从nand启动还是flash中启动
ldr r0, =BWSCON
ldr r0, [r0]
ands r0, r0, #0x6
tst r0, #0x0
bne norflash_boot
nandflash_boot:
#define LENGTH_UBOOT 0x40000
#define NAND_CTL_BASE 0x4e000000
#define oNFCONF 0x00
#define oNFCONT 0x04
#define oNFCMD 0x08
#define oNFSTAT 0x20
@reset NAND
mov r1,#NAND_CTL_BASE
ldr r2,=((7<<12)|(7<<8)|(7<<4))
str r2,[r1,#oNFCONF]
ldr r2,[r1,#oNFCONF]
ldr r2,=((1<<4)|(1<<1)|(1<<0)) @Active low CE control
str r2,[r1,#oNFCONT]
ldr r2,[r1,#oNFCONT]
@ get read to call C functions
ldr sp,DW_STACK_START @setup stack point
mov fp,#0 @no previous frame, so fp = 0
@copy Uboot to ram
ldr r0, =TEXT_BASE
mov r1,#0x0
mov r2,#LENGTH_UBOOT
bl nand_read_ll
tst r0,#0x0
beq ok_nand_read
bad_nand_read:
loop2:
b loop2 @infinite loop
ok_nand_read:
@verify
mov r0,#0
ldr r1,=TEXT_BASE
mov r2,#0x400 @ compare 4k code from sram to sdram
go_next:
ldr r3, [r0], #4
ldr r4, [r1], #4
teq r3, r4
bne notmatch
subs r2,r2,#4
tst r2,#0x0 @do not forget the instruction if have not
beq stack_setup
bne go_next
notmatch:
loop3:
b loop3 @infinite loop
/*****************************nand boot**************************/
移植内核:
vi Makefile
ARCH ?=$ (SUBARCH)
CROSS_COMPILE ?=
修改为
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
vi ./arch/arm/mach-s3c24xx/mach-smdk2440.c
s3c24xx_init_clocks(12000000);
需要修改机器码。修改arch/arm/tools/mach-types
s3c2440 ARCH_S3C2440 S3C2440 @和u-boot中一致
vi arch/arm/mach-s3c24xx/common-smdk.c
static struct mtd_partition smdk_default_nand_part[] = {
[0] = {
.name = "u-boot",
.size = SZ_256K,
.offset = 0,
},
[1] = {
.name = "params",
.offset = MTDPART_OFS_APPEND,
.size = SZ_128K,
},
[2] = {
.name = "kernel;",
.offset = MTDPART_OFS_APPEND,
.size = SZ_4M,
},
[3] = {
.name = "rootfs",
.offset = MTDPART_OFS_APPEND,
.size = MTDPART_SIZ_FULL,
},
};
make s3c2410_defconfig
make menuconfigs
File systems --->
[*] Miscellaneous filesystems --->
<*> yaffs2 file system support
[*] Use the ARM EABI to compile the kernel
支持网络:
make uImage
制作mtdpart命令
在arch/arm/lib/board.c for(;;) 前面添加run_command("mtdparts default", 0);
/*mtdparts add*/
#if 0
#define CONFIG_CMD_MTDPARTS
#define CONFIG_MTD_DEVICE
#define MTDIDS_DEFAULT "nand0=fl2440-0" /* ??ò??????? */
#define MTDPARTS_DEFAULT "mtdparts=fl2440-0:256k(u-boot)," \
"128k(params)," \
"4m(kernel)," \
"-(rootfs)"
#endif
U-boot中控制台命令相关推荐
- 虚幻竞技场中的控制台命令
Console Commands控制台命令 在UT3里可以通过"~"键打开控制台输入命令,命令列表如下: 1.General Commands常规命令 实际输入的时候不需要加[ ] ...
- Spring Boot中使用RabbitMQ
很久没有写Spring Boot的内容了,正好最近在写Spring Cloud Bus的内容,因为内容会有一些相关性,所以先补一篇关于AMQP的整合. Message Broker与AMQP简介 Me ...
- rabbitmq使用_Spring Boot中使用RabbitMQ
Message Broker与AMQP简介 Message Broker是一种消息验证.传输.路由的架构模式,其设计目标主要应用于下面这些场景: 消息路由到一个或多个目的地 消息转化为其他的表现方式 ...
- redis 支持 json_Spring Boot 中集成 Redis
阅读本文约需要5分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了 Spring Boot 中的拦截器,今天跟大家分享下 ...
- 在Spring Boot中使用Log4j2
实在看不下去搜索引擎查出来的文章中各种错误的配置信息,于是翻译了下文. 翻译原文:How to use Log4j2 with Spring Boot Apache Lo4j 2 是Log4j 1.x ...
- java 消息服务框架_Java消息服务 在 Spring Boot 中的使用
原标题:Java消息服务 在 Spring Boot 中的使用 当前环境 Mac OS 10.11.x docker 1.12.1 JDK 1.8 SpringBoot 1.5 前言 基于之前一篇&q ...
- 徒手解密 Spring Boot 中的 Starter自动化配置黑魔法
我们使用 Spring Boot,基本上都是沉醉在它 Stater 的方便之中.Starter 为我们带来了众多的自动化配置,有了这些自动化配置,我们可以不费吹灰之力就能搭建一个生产级开发环境,有的小 ...
- spring mysql mongdb_Spring Boot中使用MongoDB数据库的方法
MongoDB数据库简介 简介 MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自"humongous",是一种开源的文 ...
- 如何在Java中解析命令行参数?
在Java中解析命令行参数的好方法是什么? #1楼 我不建议使用Apache Common CLI库,因为它是非线程安全的. 它使用带有静态变量和方法的有状态类来进行内部工作(例如OptionBuil ...
最新文章
- 【VS+QT开发】获取本地网络信息小软件(C++)
- 《数据库SQL实战》查找当前薪水详情以及部门编号dept_no
- elasticsearch实现远程索引复制
- c# 智能升级程序代码(1)
- vs2017 EFCore 迁移数据库命令
- 40 多套 Java 完整实战项目,各个精品!
- MAC 设计师必备的设计绘图软件 推荐与下载
- jumpserver-登录提示Server error occur, contact administrator
- ORB-SLAM2详解(一)文献导读
- 微信公众号之微信登录
- push(array)和push([...array])的区别和联系
- 服务器基础设置:H3C服务器,ilo地址,管理员密码、PXE启动、虚拟化是否打开
- 【IoT】 产品设计:BRD、MRD、PRD详解(一)
- 聆听朱清时教授讲创新
- 北航计算机学院王华峰,软件学院学术论坛第四次宣讲会
- 拼多多“重农主义”的胜利
- kb-vuln3 靶机 wp
- 用注意力机制实现中英文互译
- 一篇小学生作文《我的爸爸在华为》,看哭无数人!
- 手撸架构,网络 面试36问
热门文章
- matplotlib隐藏坐标轴
- java盘古分词_.NET使用Lucene.Net和盘古分词类库实现中文分词
- 压缩算法——FLAC (Free Lossless Audio Codec)编码原理
- 计算机在职英语,我是社会在职人员,能考什么样的英语?
- 伯禹公益AI《动手学深度学习PyTorch版》Task 05 学习笔记
- [紧急]华展云再次连夜更新200余本16年会刊,2016年会刊量级已达全网第一
- yolov3--25--Detectron目标检测可视化-P-R曲线绘制-Recall-TP-FP-FN等评价指标
- 【Git】分支概念及操作
- 狗狗40题~ (Volume C)
- 如何修改linux中的文本格式