1.1 什么是buildroot Buildroot是Linux平台上一个构建嵌入式Linux系统的框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到机器上运行的Linux系统软件(包含boot.kernel.rootfs以及rootfs中的各种库和应用程序). 下载:git clone git://git.buildroot.net/buildr…
一.内存控制器 在关闭了MMU和caches 之后 就进入lowlevel_init 函数,对内存控制器进行初始化.lowlevel_init.S (board\samsung\mini2440) 1.1 内存控制器介绍 前面已经看过这张表格了.从这张表格中可以看处,我们的程序代码,不管使用不使用 NAND Flash 都是从0地址开始启动,只不过使用 Nand flash 需要将前4K代码拷贝进 SRAM中去. 1.2 内存控制器的寄存器 1.2.1 总线宽度和等待控制寄存器 每一个 BANK…
当前虽然编译成功了,但是对于我们自己的目标板并不太适用.还得做一系列得修改. 一.lds 文件分析 u-boot 中最重要得链接文件即是,u-boot.lds.我们可以查看我们编译出来得 u-boot.lds 文件进行分析,原始文件在 arch/arm/cpu/ 下,编译出来得去掉了不想关得选项. u-boot.lds脚本文件告诉链接器linker如何布局代码段.数据段.bss段等,已经配置了u-boot自拷贝(从flash到RAM的copy)的内容.另外,还简要的涉及了动态链接技术等. /*…
执行完 board_init_f 后,跳回到 crt0.S中继续执行汇编语言 ldr r0, [r9, #GD_START_ADDR_SP] /* sp = gd->start_addr_sp,gd->start_addr_sp在fdt的初始位置 */ bic r0, r0, # /* 8-byte alignment for ABI compliance */ mov sp, r0 /* sp 指向 fdt 初始位置 */ ldr r9, [r9, #GD_BD] /* r9 = gd-&g…
设置完寄存器控制器后,则跳出cpu_init_crit,进入_main 函数.即进入crt0.S (arch\arm\lib)  跟着代码流程慢慢走 一.crt0.S 1.1 第一步执行代码 /* 预设堆栈指针为CONFIG_SYS_INIT_SP_ADDR */ /* #define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE) */ /* #define CONFIG_SY…
一.cpu_init_crit 当执行完时钟初始化后,程序执行: bl    cpu_init_crit 跳转到CPU初始化处进行,在其中主要是执行 caches 的关闭 和 MMU的关闭,之后跳转到 lowlevel_init 中执行,进行系统总线的初始化. 1.1 缓存和MMU的作用 缓存是主存(内存)和CPU通用寄存器之间设置的一个高速的.容量相对较小的存储器,把正在执行的指令地址附近的一部分指令或数据从主存调入这个存储器,供CPU在一段时间内使用,以提高程序的运行速度. mmu可以实现虚…
一.代码分析 上一节已经分析了链接文件,知道了首先代码是从 _start 开始,之后设置了中断向量表,然后从 start.s 开始运行. _start:vectors.S (arch\arm\lib) reset:start.S (arch\arm\cpu\arm920t) _main:crt0.S (arch\arm\lib) board_init_f:Board_f.c (common) 1.1 vectors.S vectors.S 为软件起始,标记_start,在此文件中,主要是定义异常…
一.准备工作 在建立之前,先需要将下载的u-boot 拷贝一份出来解压,在此工程下进行更改和创建.同时根据前面搜索到的 mini2440开发板所在的版本,下载一份u-boot 拷贝出 mini2440 的工程文件. 选择2013.10版本的 u-boot.下载,并解压. 1.1 board 目录修改 u-boot-2013.10/board/samsung/smdk2410 复制进  u-boot-2017.11/board/samsung/ 目录 文件名修改: Makefile 修改为: 创建…
Buildroot官方全英文使用手册的链接是https://buildroot.org/downloads/manual/manual.html,需要知道每一个细节的朋友,可以仔细查阅,这篇文章只是我自己从中提炼出来的一下快速上手的技巧. 如何在现有项目加入自己的APP Buildroot从零开始构建的过程还是很复杂的,以后的文章会一步步介绍.我们先来看看如何在现有项目中加入一个自己的应用的构建方法,快速上手.实际上,快速添加应用包的方法,在官方网站也有一份英文文档:https://buildr…
使用Buildroot,让嵌入式Linux系统构建更加便捷.本文以Buildroot-2016.05的版本为基础来讲解,不同版本之间有细节差异,需要根据读者使用的版本自行调整. Buildroot是什么 Buildroot是Linux平台上一个开源的嵌入式Linux系统自动构建框架.整个Buildroot是由Makefile脚本和Kconfig配置文件构成的.你可以和编译Linux内核一样,通过buildroot配置,menuconfig修改,编译出一个完整的可以直接烧写到机器上运行的Linux…