![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
BootLoader
酸菜鱼的鱼
Linux rtos 驱动应用开发 本博客主要用于工作学习的总结和备份,欢迎大家留言评论交流,谢谢
展开
-
树莓派系统中cmdline.txt文件的介绍
Linux内核会接收到在启动期间传递的命令行参数。在树莓派中这些参数是在boot分区目录下的一个文件中被定义,这个文件就是cmdline.txt。用户可以使用编辑器编辑这个文件。在内核启动时传递给内核的命令行,可以使用cat /proc/cmdline查看。这些信息和cmdline.txt并不完全一样。因为固件在启动内核之前可以对这个文件的内容进行修改。命令行选项有很多命令行参数,其中一些事可以被内核定义的,其他的一些事内核正在使用的代码使用。cmdline.txt中标准的命令行条目:c翻译 2020-05-31 11:13:29 · 5605 阅读 · 0 评论 -
busybox init进程和/etc/inittab关系
嵌入式系统下的 linux 启动过程一般是:1. 在 bootloader 中制定各种要求传给 linux 内核的参数,制作 ramdisk 或 ramfs 文件系统,并在开机后首先 mount 上,该文件系统主要负责包含启动运行的配置文件,嵌入式系统主要是/etc/inittab 和/etc/rcS 文件;2. 在 init 进程启动后,进程首先执行/etc/inittab 文件,该文件语法...原创 2019-06-23 22:26:35 · 867 阅读 · 0 评论 -
arm汇编基础
arm汇编中的标号标号只能由 a~z, A~Z, 0~9, “.”, _等字符组成。当标号为 0~9 的数字时为局部标号。局部标号可以重复出现,使用方法如下:标号 f: 在引用的地方向前的标号标号 b: 在引用的地方向后的标号局部标号代表它所在的地址,因此也可以当作变量或者函数来使用。arm汇编中的分段:(1) .section 伪操作用户可以通过 .section 伪操...转载 2019-06-23 16:45:08 · 3065 阅读 · 0 评论 -
uboot的配置文件介绍
u-boot 支持很多开发板, 而开发板外设不同, 所以给每个开发板都会有一个自己的配置头文件, 这个文件是 include\configs\板名.h,u-boot 中使用到所有宏定义都应该在定义在这个文件中, 这个文件有两类宏定义, 一种 CFG_开头, 一种是 CONFIG_开头的。CONFIG_开头的宏一般使用来定义芯片级的功能, CFG_开头的宏一般 是用来定义板级功能。头文件中定义的宏...转载 2019-06-23 13:00:26 · 4407 阅读 · 0 评论 -
uboot的启动第一阶段流程梳理
u-boot 代码分为两个阶段第一阶段是汇编,入口是 arch/arm/cpu/armv7/start.S,第二阶段是 C 语言, 入口是 board.c。第一阶段:1. 异常向量表定义2. 设置 SVC32 模式(ARM 七种工作模式)3. 调用 cpu_init_crit 进行 cpu 相关初始化1) 清 TLB(页面缓存)、关 MMU 及 Cache 等2) 转入低级初始...转载 2019-06-23 11:15:34 · 1214 阅读 · 0 评论 -
u-boot启动第二阶段的梳理
u-boot启动第二阶流程梳理:本 阶 段 主 要 有 两 个 核 心 函 数 , 分 别 是 board_init_f( ) 和 board_init_r() , 这 两 个 函 数 都 是 在arch\arm\Lib\Board.c 中。1.board_init_f()1) gd_t 数据结构空间分配2) 回调一组初始化函数3) 对 gd_t 数据结构进行初始化Glob...转载 2019-06-23 11:14:39 · 695 阅读 · 0 评论 -
u-boot常用命令介绍
1.help version以下是环境变量相关的命令:printenv setenv saveenv2.printenv查看全部的环境变量:TINY4412 # printenvbaudrate=115200bootcmd=movi read kernel 0 40008000;movi read rootfs 0 41000000 100000;bootm 4000800...原创 2019-06-17 22:25:20 · 1364 阅读 · 0 评论 -
arm cotex-a9裸机led实践-以exynos4412为例
具體的源代碼存放與:https://download.csdn.net/download/u010299133/11244210文件列表说明:├── led.lds --链接脚本├── led.S --led主程序├── makefile --编程步骤控制Mafile└── sd_fuse --这个文件夹中的内容是用于制作BL2的工具源码 ├── M...原创 2019-06-16 22:29:30 · 526 阅读 · 0 评论 -
Linux开发平台搭建中的U-boot 命令相关说明
设置 u-boot 环境变量进入 u-boot 命令行模式,输入如下命令:TINY4412 # setenv ipaddr 192.168.1.101TINY4412 # setenv gatewayip 192.168.1TINY4412 # setenv netmask 255.255.255.0TINY4412 # setenv serverip 192.168.1.20 //pc...原创 2019-06-16 17:09:56 · 335 阅读 · 0 评论 -
以busybox制作Linux根文件系统,以及nfs设置和uboot设置--嵌入式开发平台的搭建
主要分为3个部分rootfs相关文件创建及配置虚拟机网络地址及 nfs 服务配置开发板网络和环境变量配置1.rootfs相关文件创建及配置在安装好相应的交叉工具链后,下载busybox源码并解压。进入busybox的源码目录执行#make menuconfig需要配置的总体选项如下:Symbol: BUILD_LIBBUSYBOX [=y]//编译为共享库CRO...原创 2019-06-16 16:59:41 · 1489 阅读 · 0 评论 -
C语言直接操作寄存器物理地址的方法
读寄存器值:u32RegValue = *((uint32 volatile *)(reg_addres));写寄存器值:*((uint32 volatile *)(reg_addres)) = value;原创 2018-12-20 17:57:01 · 6720 阅读 · 1 评论 -
rk3288 SDK概览
瑞芯微的芯片rk3288的SDK的相关内容:解压SDK后,初步看到的文件目录:直接进入Doc目录,先从文档开始:第一个要看的文档,当然是从Doc/目录下的rockchip Linux软件开发指南.pdf开始。此SDK是基于buildroot的软件开发包,包含了基于Linux系统开发用到的驱动,工具和应用等软件包。 ...原创 2018-12-13 19:02:51 · 3462 阅读 · 1 评论 -
基于rv1108的双系统的实现方法
背景:产品需要实现双系统,在开机之前将开关拨到不同的位置,系统启动时在loader阶段就会去检测开关按键的状态,根据按键的状态,去不同的偏移地址加载不同的kernel,并且启动相应的rootfs,实现不同的应用。loader:此阶段需要检测案件的io管脚的状态,涉及到基于rv1108的裸机程序的编写,检测io口的电平的高低。不同的电平,赋予不同的kernel的加载地址。...原创 2019-03-20 19:31:35 · 1537 阅读 · 8 评论 -
Linux中的平台设备驱动模型
在 Linux 的设备驱动模型中,关心总线、设备和驱动这 3 个实体,总线将设备和驱动绑定。在系统每注册一个设备的时候,会寻找与之匹配的驱动;相反的,在系统每注册一个驱动的时候,会寻找与之匹配的设备,而匹配由总线完成。 平台设备匹配的依据是: 1)根据平台设备结构和平台驱动结构中的name成员进行匹配。-- 一个设备对应一个驱动 2)根据平台设备结构中的n...原创 2018-11-11 11:45:48 · 2247 阅读 · 0 评论 -
在BootLoader中使用gpio--获取gpio的高低电平,以及设置相应的管脚的电平高低
以下以rv1108平台为例:在项目中,需要实现一个功能,在Linux kernel加载前BootLoader判断一个引脚电平的高低状态,从而决定加载不同的kernel,以及相应的文件系统,以实现双系统的功能。//判断按键的电平高点状态:#if 1 //set gpio3_a4's direction intput u32Reg = read_XDATA32(0x1033...原创 2018-11-03 16:06:59 · 6488 阅读 · 0 评论 -
dtc使用,将dtb文件编译出dts的文件
dtc的使用:将dtb文件编译出dts的文件:dtc -I dtb -O dts kernel/arch/arm/boot/dts/rv1108-evb-v12.dtb -o ../../../share-2018xyw/f08/rv1108-evb-v12-new.dts原创 2018-10-25 16:39:28 · 3009 阅读 · 0 评论 -
boot对Linux内核的启动
boot:读取kernel到内存设置tag参数 kernel:匹配机器id(从R1读出)能否支持该机器单板。调用开发板相关的初始化函数。不同的开发板有不同的板级外设,所以初始化内容就不同。当启动内核时首先从环境变量中读取机器ID,如果没有就使用默认的机器ID。2.读出R2的值(是boot设置的tag参数的首地址),并解析tag参数。3.加载驱动程序。如:flash,emmc...原创 2018-10-28 14:56:48 · 446 阅读 · 0 评论