嵌入式开发入门

写在前面

本文是根据B站UP主:韦东山发布教学课程学习。视频链接:【韦东山】韦东山手把手教你嵌入式Linux快速入门到精通 | Linux应用驱动开发基于I.MX6ULL/STM32MP157/T113/D1H开发板
本文不讲解环境配置等基本内容,主要从开发出发进行学习笔记的记录。
但是是基于海思平台

嵌入式Linux启动流程

Linux启动流程

编译和替换内核

本部分是简单的编译并替换内核、设备树、驱动等。
注:在编译驱动前需要先编译内核,因为编译后的内核能够将运行平台(x86、arm、mips等)等信息配置好,这样驱动编译时能够知道什么平台使用。

使用qemu模拟arm环境

参考文章:CSDN-(2023)从零开始用qemu搭建虚拟arm环境
使用 vexpress-a9 这款开发板。vexpress-a9 是 Arm 公司自己设计的一款 4 核 Cortex-A9 开发板,U-Boot、Linux Kernel 和 QEMU 对这款开发板都做了完整的支持。

  1. 安装qemu-system-arm环境:sudo apt-get install qemu-system-arm
  2. 安装交叉编译工具:sudo apt-get install gcc-arm-linux-gnueabi
  3. 下载内核:wget https://mirrors.edge.kernel.org/pub/linux/kernel/v5.x/linux-5.10.tar.gz
  4. 解压内核并进入目录:tar xf linux-5.10.tar.gz && cd linux-5.10
  5. 生成vexpress开发板子的config文件:make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm vexpress_defconfig
  6. 编译内核:make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm
  7. 制作根文件系统,记得换目录,别都弄在一堆
    1. 下载busybox源码:wget http://www.busybox.net/downloads/busybox-1.36.0.tar.bz2
    2. 编译安装:make defconfig && make CROSS_COMPILE=arm-linux-gnueabi- && make install CROSS_COMPILE=arm-linux-gnueabi-
    3. 新建目录,用于保存根目录结构:mkdir rootfs
    4. 拷贝和创建文件及目录:
       cp busybox-1.36.0/_install/* -r rootfs/
       cd rootfs
       //创建必要路径
      # mkdir etc dev mnt
      # mkdir -p proc sys tmp mnt
      # mkdir -p etc/init.d/
      //添加文件系统挂载信息
      # vim etc/fstab
      proc        /proc           proc         defaults        0        0
      tmpfs       /tmp            tmpfs      defaults        0        0
      sysfs       /sys            sysfs        defaults        0        0
      //开机脚本
      # vim etc/init.d/rcS
      echo -e "Welcome to tinyLinux"
      /bin/mount -a
      echo -e "Remounting the root filesystem"
      mount  -o  remount,rw  /
      mkdir -p /dev/pts
      mount -t devpts devpts /dev/pts
      echo /sbin/mdev > /proc/sys/kernel/hotplug
      mdev -s
      # chmod 755 etc/init.d/rcS
      //busybox执行的文件
      # cd dev
      //创建设备节点    c为字符设备 5为主设备号,1为从设备号
      sudo mknod console c 5 1
      sudo mknod null c 1 3
      sudo mknod tty1 c 4 1
      sudo mknod tty2 c 4 2
      sudo mknod tty3 c 4 3
      sudo mknod tty4 c 4 4
    5. 打包根文件系统:
      //生成镜像
      dd if=/dev/zero of=a9rootfs.ext3 bs=1M count=512
      //格式化ext3
      mkfs.ext3 a9rootfs.ext3
      //挂载拷贝文件
      sudo mkdir tmpfs
      sudo mount -t ext3 a9rootfs.ext3 tmpfs/ -o loop
      sudo cp -r rootfs/*  tmpfs/
      sudo umount tmpfs
  8. 准备好内核、设备树、根文件系统拷贝到同一目录:
    目录结构

    运行:qemu-system-arm -M vexpress-a9 -m 512M -kernel ./zImage -dtb ./vexpress-v2p-ca9.dtb -nographic -append "root=/dev/mmcblk0 console=ttyAMA0" -sd a9rootfs.ext3
    结果:
    qemu运行
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇
error: Content is protected !!内容保护!!