嵌入式Linux的学习之初试uboot

背景

在工作中,部门里的嵌入式大屏设备都是安卓开发的。但是安卓系统对硬件要求会高一些,成本也高,部门打算换为Linux系统。遂开始回忆嵌入式Linux系统的开发,并且找了一些教程学习。
找教程的过程真的很艰辛啊,很多开发板以及配套教程都是面对初学者,花费大量篇幅去讲解Linux基础命令,文件结构,虚拟机安装过程,ftp,nfs等环境配置之类的。而且视频教程没法自主选择重点学习的内容。

教程

个人比较喜欢文字教程,博客或者书籍,能够自己把握学习内容,节约时间。经过多方研究,还是找到了当年大学里的推荐教材,文全刚主编的《嵌入式linux操作系统原理与应用》。看前言是由吉大,北航的教授参与编著,从内容上看,基本能够涵盖市面主流入门教程的所讲的东西。

学些什么?

嵌入式Linux系统首先是Linux系统,那么首先就要包含学习Linux系统的一些列知识:

Linux:

  1. 了解概念,发展历史与应用
  2. 了解操作,结构,shell脚本
  3. gcc,gdb,makefile
  4. 编程方面了解IO,进程控制,通信,同步以及多线程

嵌入式:

  1. 嵌入式开发流程
  2. bootloader,内核,文件系统移植
  3. 驱动开发
  4. 应用开发:gui,数据库,网络编程

看上去东西也不多,像我如果有Linux,C,GUI开发基础的话,只需要学习下面嵌入式开发的2.3.两点即可。

BootLoader

此处省略一万个理论概念,简单讲,让是用来检测和初始化硬件,启动操作系统的一小段程序。常见的armboot,uboot,redboot,vivi等。很多教程都是用的uboot。
此处为uboot官方使用文档地址:

https://u-boot.readthedocs.io/en/latest/

在了解BootLoader的功能和作用,可以按照文档学习和使用。再附上Ubuntu下载地址:

https://releases.ubuntu.com/22.04/

安装好操作系统,虚拟机或者双系统都可以,根据文档操作即可。当然配环境的过程就不再赘述了如果遇到什么问题,欢迎留言一起交流。
笔者配好环境以后,以树莓派为例,先尝试编译了把:
因为uboot本身附带了众多开发板的配置文件(configs文件夹下),其中就包括树莓派,在u-boot文件夹下执行,如果你的板子是全新的,那就要自己在u-boot中适配添加配置以适配你的开发板,这个我们留到后面去讲。

make rpi_4_defconfig
CROSS_COMPILE=aarch64-linux-gnu- make

最终编译成功。uboot的文档(doc目录下)比较详细,建议仔细阅读。编译出的文件如下:

-rwxrwxr-x   1 ql ql 4747624  813 15:26 u-boot #elf格式
-rwxrwxr-x   1 ql ql 1779904  813 15:26 u-boot.srec #s-record 格式
-rwxrwxr-x   1 ql ql  619056  813 15:26 u-boot.bin #二进制格式,最常用
-rw-rw-r--   1 ql ql  120173  813 15:26 System.map #映像符号表

理论上以上几种格式都是可以用的,但是要看加载器能不能识别这些格式。

后面笔者也会以具体开发板为例进行开发,并记录学习过程,欢迎大家交流。

你可能感兴趣的:(Linux,驱动开发,linux,学习,uboot)