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中控制台命令相关推荐

  1. 虚幻竞技场中的控制台命令

    Console Commands控制台命令 在UT3里可以通过"~"键打开控制台输入命令,命令列表如下: 1.General Commands常规命令 实际输入的时候不需要加[ ] ...

  2. Spring Boot中使用RabbitMQ

    很久没有写Spring Boot的内容了,正好最近在写Spring Cloud Bus的内容,因为内容会有一些相关性,所以先补一篇关于AMQP的整合. Message Broker与AMQP简介 Me ...

  3. rabbitmq使用_Spring Boot中使用RabbitMQ

    Message Broker与AMQP简介 Message Broker是一种消息验证.传输.路由的架构模式,其设计目标主要应用于下面这些场景: 消息路由到一个或多个目的地 消息转化为其他的表现方式 ...

  4. redis 支持 json_Spring Boot 中集成 Redis

    阅读本文约需要5分钟 大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈).上次老师跟大家分享了 Spring Boot 中的拦截器,今天跟大家分享下 ...

  5. 在Spring Boot中使用Log4j2

    实在看不下去搜索引擎查出来的文章中各种错误的配置信息,于是翻译了下文. 翻译原文:How to use Log4j2 with Spring Boot Apache Lo4j 2 是Log4j 1.x ...

  6. java 消息服务框架_Java消息服务 在 Spring Boot 中的使用

    原标题:Java消息服务 在 Spring Boot 中的使用 当前环境 Mac OS 10.11.x docker 1.12.1 JDK 1.8 SpringBoot 1.5 前言 基于之前一篇&q ...

  7. 徒手解密 Spring Boot 中的 Starter自动化配置黑魔法

    我们使用 Spring Boot,基本上都是沉醉在它 Stater 的方便之中.Starter 为我们带来了众多的自动化配置,有了这些自动化配置,我们可以不费吹灰之力就能搭建一个生产级开发环境,有的小 ...

  8. spring mysql mongdb_Spring Boot中使用MongoDB数据库的方法

    MongoDB数据库简介 简介 MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自"humongous",是一种开源的文 ...

  9. 如何在Java中解析命令行参数?

    在Java中解析命令行参数的好方法是什么? #1楼 我不建议使用Apache Common CLI库,因为它是非线程安全的. 它使用带有静态变量和方法的有状态类来进行内部工作(例如OptionBuil ...

最新文章

  1. 【VS+QT开发】获取本地网络信息小软件(C++)
  2. 《数据库SQL实战》查找当前薪水详情以及部门编号dept_no
  3. elasticsearch实现远程索引复制
  4. c# 智能升级程序代码(1)
  5. vs2017 EFCore 迁移数据库命令
  6. 40 多套 Java 完整实战项目,各个精品!
  7. MAC 设计师必备的设计绘图软件 推荐与下载
  8. jumpserver-登录提示Server error occur, contact administrator
  9. ORB-SLAM2详解(一)文献导读
  10. 微信公众号之微信登录
  11. push(array)和push([...array])的区别和联系
  12. 服务器基础设置:H3C服务器,ilo地址,管理员密码、PXE启动、虚拟化是否打开
  13. 【IoT】 产品设计:BRD、MRD、PRD详解(一)
  14. 聆听朱清时教授讲创新
  15. 北航计算机学院王华峰,软件学院学术论坛第四次宣讲会
  16. 拼多多“重农主义”的胜利
  17. kb-vuln3 靶机 wp
  18. 用注意力机制实现中英文互译
  19. 一篇小学生作文《我的爸爸在华为》,看哭无数人!
  20. 手撸架构,网络 面试36问

热门文章

  1. matplotlib隐藏坐标轴
  2. java盘古分词_.NET使用Lucene.Net和盘古分词类库实现中文分词
  3. 压缩算法——FLAC (Free Lossless Audio Codec)编码原理
  4. 计算机在职英语,我是社会在职人员,能考什么样的英语?
  5. 伯禹公益AI《动手学深度学习PyTorch版》Task 05 学习笔记
  6. [紧急]华展云再次连夜更新200余本16年会刊,2016年会刊量级已达全网第一
  7. yolov3--25--Detectron目标检测可视化-P-R曲线绘制-Recall-TP-FP-FN等评价指标
  8. 【Git】分支概念及操作
  9. 狗狗40题~ (Volume C)
  10. 如何修改linux中的文本格式