嵌入式学习笔记104-uboot_1.1.6移植(4)

  1. 前面的4篇uboot博文基本概括了uboot的整体flow,现在使能支持启动linux,至此之前请先阅读《嵌入式学习笔记200-Linux kernel初体验》和《嵌入式学习笔记201-Linux kernel动起来》。准备kernel的镜像文件才可以立马检测uboot是否能够启动kernel。在u-boot-1.1.6\include\configs\tq2440.h 最后添加如下几行code:
/******************  boot kernel setup  ******************************/
#define CONFIG_SETUP_MEMORY_TAGS  1
#define CONFIG_CMDLINE_TAG  1

#define CONFIG_BOOTARGS "noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0"

#define CONFIG_BOOTCOMMAND "nand read 0x32000000 0x200000 0x300000; bootm 0x32000000"

在do_bootm_linux()会使用到,关于CONFIG_BOOTCOMMAND 的解释在《嵌入式学习笔记102-uboot_1.1.6移植(2)》有提及,现在解释一下CONFIG_BOOTARGS ,这个命令参数很多,不做过多解释,读者可以自行查看其他资料,只讲解该命令的参数,其中noinitrd 代表不用ramdisk文件系统,linux启动后会去挂载文件系统 由root=/dev/mtdblock2指定,所以这就要求到时porting kernel时注意分区与该参数是否匹配。init表示linux除main系统初始化后调用文件系统存储的第一个脚本。所以我们的文件系统根目录下要有linuxrc ,否则会挂了,不过也不是一定要先启动这个脚本,也可以是/etc下其他的。关于console有很多种设置,具体本人也不是很清楚,就使用常用设置 ttySAC0

时间: 2024-08-01 10:45:35

嵌入式学习笔记104-uboot_1.1.6移植(4)的相关文章

嵌入式学习笔记103-uboot_1.1.6移植(3)

经过之前对uboot的整体flow分析,现在开始针对2440移植,需要注意的是移植的code可能包含支持部分的2410code 不过并没有在s3c2410板子实测过. 主要概括:第一阶段的汇编code尽量短小,能用C实现的就用C,由于2440的board和头文件是从2410 copy过来的 里面会有很多信息或者宏关于2410,并且很多.c文件的头文件由于include的是2410,所以新增的一些关于2440的结构体也会一并放在2410.h,移植的思想与前文类似, 根据code的执行流程来移植.

嵌入式学习笔记101-uboot_1.1.6移植(1)

根据前篇博文(嵌入式学习笔记100-uboot1.1.6初体验)最后的结论,现在开始将其实现: a. 修改makefile的CROSS_COMPILE指定编译器 arm-linux-gcc -v –> gcc version 3.4.5 CROSS_COMPILE = /opt/EmbedSky/crosstools_3.4.5_softfloat/gcc-3.4.5-glibc-2.3.6/arm-linux/bin/arm-linux- chmod -R 777 u-boot-1.1.6/

嵌入式学习笔记202-Linux kernel跑起来

在<嵌入式学习笔记104-uboot_1.1.6移植(4)>.<嵌入式学习笔记300-linux根文件系统搭建>uboot和根文件系统都准备好的前提下,此时的kernel已基本可以跑起来,不过还差正确的挂起文件系统,其中uboot传给kernel的挂载处是root=/dev/mtdblock2 ,而在<嵌入式学习笔记201-Linux kernel动起来>的打印分区信息是: mtd: partition "Boot Agent" doesn't en

嵌入式学习笔记008-裸奔篇之串口

串口是个好东西,前几篇裸奔程序由于没有串口,自己调试都是有led等来表示的,比较"苦逼",终于可以用串口了~~~,这里主要采用上一篇博文(嵌入式学习笔记007-裸奔篇之定时器),也就是串口也是用中断实现的,而且也只是在前一篇博文增加串口的初始化uart0_init(),以及在中断处理函数增加对串口的处理.只要稍微改造前一篇博文就是一个通用的中断处理程序! 这里主要实现在串口输入一个字符,接受后+2再发送到串口,所以在串口输入a 会返回c---. 由于code都有相应的注释,读者自行查看

嵌入式学习笔记201-Linux kernel动起来

在前篇博文<嵌入式学习笔记200-Linux kernel初体验>在已经确保环境编译是ok的,接下来让kernel能够最基本的动起来,起码可以看到基本的启动打印! 修改外部输入时钟频率, 修改 linux-2.6.30.4\arch\arm\mach-s3c2440\mach-smdk2440.c 在大概163行将16934400改成12000000. static void __init smdk2440_map_io(void) { s3c24xx_init_io(smdk2440_iod

ucos实时操作系统学习笔记——操作系统在STM32的移植

使用ucos实时操作系统是在上学的时候,导师科研项目中.那时候就是网上找到操作系统移植教程以及应用教程依葫芦画瓢,功能实现也就罢了,没有很深入的去研究过这个东西.后来工作了,闲来无聊就研究了一下这个只有几千行代码的操作系统,也没所有的代码都看,只是看了其中部分内容.自己还自不量力的尝试着去写过简单的操作系统,最后写着写着就被带到了ucos的设计思路上了,后来干脆就“copy”代码了,虽说对操作系统内核的理解有很大的帮助,但是很是惭愧啊,智力不够,对操作系统内核的设计者更加仰慕,O(∩_∩)O哈哈

嵌入式学习笔记102-uboot_1.1.6移植(2)

接下来分析uboot的第二阶段,在第一阶段的start.S的末尾有: ldr pc, _start_armboot _start_armboot: .word start_armboot 而start_armboot()就是第二阶段的入口,首先我们要认识两个重要的结构体,start_armboot()函数的一系列初始化可以说都是以这个结构体为主线的: typedef struct global_data { bd_t *bd; unsigned long flags; unsigned long

cortex_m3_stm32嵌入式学习笔记(十三):USMART调试组件移植(调试神器)

当我们学了TFTLCD显示之后遇到一个很明显的问题是:参数估计不准确,比如说我们想在屏幕的中央部分画一个圆,但往往坐标把握不准导致一次一次的往MCU里面烧程序,一次一次调,但没烧一次烧的可以MCU的命啊..显然这样是很浪费的,于是牛逼的人就想了办法了(orz),我是用的原子写的USMART组件,该组件移植很简单,只需要将USMART文件夹拉到工程里面,然后把文件添加到工程里去,里面有一个文件 usmart_config.c文件需要用户自己添加函数声明以及函数所需头文件: 第一个区域用户自己添加所

I.MX6Q(TQIMX6Q/TQE9)学习笔记——新版BSP之u-boot移植

前段时间就开始学习I.MX6Q了,但是最近工作实在是忙,间断了一些时间了.为了提高移植效率,还是考虑移植Freescale维护的3.10版本的内核. 源码获取 Freescale维护的3.10的内核是使用git管理的,但是直接使用git下载代码会比较慢,下面是我下载好的uboot和kernel: I.MX6Q BSP源码(Freescale官方维护) 代码下载好后,先将u-boot解压到工作目录,然后在终端下切换到uboot根目录.由于这个版本的bsp是使用git管理的,因此,需要切换到指定分支