嵌入式linux系统的启动流程是什么样的

1 ) 需要 RAM 初始化。
CPU 控制寄存器必须正确设置。
RAM 大小必须准确测量。
示例:NXP i.MX6 ,1 GB RAM,设置控制寄存器启动并测量 1 GB 的大小。

2 )串口调试非常重要。
不是必需的,但常用。
例:STM3 2 ,使用USART1 ,波特率1 1 5 2 00,初始化信息输出。

3 ) 必须公开处理器类型。
存储在内核可见的地方。
示例:Raspberry Pi 4 ,检测为 ARMv8 ,存储在 .cpu_type 变量中。

4 ) 必须设置内核参数。
比如根文件系统的位置。
示例:Ubuntu 内核,设置 root=/dev/mmcblk0p2
5 ) 内核必须复制到RAM。
NorFlash非常慢并且不能直接工作。
示例:Rockchip RK3 3 9 9 ,4 GB NorFlash,复制到1 GB DDR4 RAM然后运行。

自己掂量一下。

如何在linux嵌入式开发板上开机自动运行用户应用程序

等等,上次用树莓派做实验的时候,我忘记关闭服务了。
结果每次开机都会运行一堆无用的程序,让系统像旧电脑一样滞后。
当时,我想知道是否可以让机器在启动后完成其工作。

那天在咖啡馆,我正在看着旁边的人调试他的开发板。
小屏幕不断闪动开始画面,我突然灵机一动。
我问他是否每次都需要手动输入说明,他点点头。
我回到办公室并立即尝试。
他说的是真的。
您只能通过按 Ctrl+C 进入命令行。

这个rc.local文件就像一个看门人,谁先到谁先被允许进入。
只需注释掉图形界面命令并将其插入到您自己的程序中即可。
就这么简单。
我特意找了一块旧的开发板,连接到电视上。
当我打开它时,看到一个闪烁的白屏,然后突然打印出“Hello, testarm-linux!”,这甚至让我感到惊讶。
那是去年四月的事了,开发板还被扔到角落里。

话虽如此,如果 rc.local 自行挂断怎么办?还是./hello命令写错了?

嵌入式Linux底层系统包含哪些东西?

嵌入式Linux底层系统的核心由这四部分组成:Bootloader、内核、驱动程序和根文件系统。

Bootloader是启动的第一个程序,负责硬件初始化和内核加载。
例如,在NXP i.MX6 开发板上,Bootloader需要初始化内存控制器和时钟。

内核管理硬件资源、调度进程并提供系统服务。
默认采用CFS调度机制,使用PREEMPT_RT更新进行实时扩展。

驱动程序是一个硬件接口,它将注册表操作转换为系统调用。
GPIO控制需要直接操作寄存器,SPI通信使用高效DMA传输。

根文件系统是第一个挂载的文件系统。
/dev目录使用mdev动态生成设备节点,/lib包含驱动模块.ko文件。

开发STM3 2 开发板时,使用U-Boot作为bootloader,内核会剪掉不用的无线网卡驱动。

使用arm-linux-gnueabihf-gcc进行交叉编译以生成ARM架构的二进制文件。

自己掂量一下。