全志V3S嵌入式驱动开发(系统image创建和烧入)

news/2024/11/8 9:25:58/

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        前面几篇文章,我们说到了怎么下载编译器、怎么编译uboot、怎么编译kernel和根文件系统。这样一步一步下来,虽然繁琐,但是也算步骤比较清晰。只是在最终量产的时候,或者说有些同学只是希望在windows系统下面使用这块板子,那么上述这些操作就有点复杂了。今天,我们讨论下,如何在构建系统image,以及如何在windows下面烧入镜像文件。

        注意,此次烧入的方法还是sd卡。

1、准备镜像文件

        所谓镜像文件,就是想办法把所有需要的uboot bin文件、内核文件、设备树文件、根文件都集中到一个文件里面。

1)创建image文件,大小为420M

sudo dd if=/dev/zero of=demo.img bs=1M count=420
sync

2)开始分区

sudo parted demo.img --script -- mklabel msdos
sudo parted demo.img --script -- mkpart primary fat16 4096s 65783s
sudo parted demo.img --script -- mkpart primary ext4 65784s -1

3)查看一下分区是否正确

shell> sudo parted demo.img 
GNU Parted 3.3
Using /home/feixiaoxing/Desktop/demo.img
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print
Model:  (file)
Disk /home/feixiaoxing/Desktop/demo.img: 440MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: Number  Start   End     Size    Type     File system  Flags1      2097kB  33.7MB  31.6MB  primary               lba2      33.7MB  439MB   406MB   primary

4)挂在到设备节点

        先查看可用的设备节点,

sudo losetup -f
/dev/loop10

        开始挂载,

shell> sudo losetup /dev/loop10 demo.img
shell> sudo kpartx -av /dev/loop10
add map loop10p1 (253:0): 0 61688 linear 7:10 4096
add map loop10p2 (253:1): 0 792424 linear 7:10 65784

        kpartx这个工具一般ubuntu不是自带的,需要自己sudo apt-get install 安装下。如果配置没有问题,一般看到两个子设备节点,

ls -l /dev/mapper
total 0
crw------- 1 root root 10, 236 5月  27 08:14 control
lrwxrwxrwx 1 root root       7 5月  27 09:01 loop10p1 -> ../dm-0
lrwxrwxrwx 1 root root       7 5月  27 09:01 loop10p2 -> ../dm-1

5)创建文件系统

sudo mkfs.msdos /dev/mapper/loop10p1
sudo mkfs.ext4 /dev/mapper/loop10p2

6)先拷贝uboot文件,挂在到/dev/loop10下面

sudo dd if=u-boot-3s-current/u-boot-sunxi-with-spl.bin of=/dev/loop10 bs=1024 seek=8

7)拷贝dtb文件和kernel文件

sudo mount /dev/mapper/loop10p1 /mnt
sudo cp ~/Desktop/linux-zero-4.10.y/arch/arm/boot/zImage /mnt
sudo cp ~/Desktop/linux-zero-4.10.y/arch/arm/boot/dts/sun8i-v3s-licheepi-zero.dtb /mnt
sudo umount /mnt

8) 拷贝根文件系统

sudo mount /dev/mapper/loop10p2 /mnt
sudo cp ~/Desktop/buildroot-2017.08/output/images/rootfs.tar /mnt
cd /mnt
sudo tar xvf rootfs.tar
sudo rm rootfs.tar 
cd ~/Desktop/
sudo umount /mnt

9)卸载磁盘

sudo kpartx -d demo.img
loop deleted : /dev/loop10

        完成上面这些操作之后,demo.img的镜像文件就算制作好了。后续,我们就可以用它来完成镜像文件的烧录工作了。

2、windows下面镜像文件烧入

        在windows上面,如果需要完成对sd卡的烧入,可以先将刚才的demo.img拷贝到windows系统上,接着下载一个win32diskimager的软件,截图如下,

         将micro sd卡插入读卡器,连接电脑,选择好镜像文件和盘符,这样就可以烧入了。烧入完毕后,可以插入到开发板,进一步验证确认下是否ok。


http://www.ppmy.cn/news/93374.html

相关文章

任务6 学生宿舍信息管理系统

系列文章 任务6 学生宿舍信息管理系统 已知宿舍的信息包括:宿舍楼号,宿舍号,床位号,对应床位号的学生学号,楼长姓名等。设计程序能实现以下功能: (1)宿舍信息录入:可随时增加宿舍信息到数据文件中 (2)宿舍信息浏览:宿舍的信息输出到屏幕 (3)查询:按学号查询学…

Vue 3 第二十二章:组件十(组件高级特性-组件的渲染函数和JSX/TSX语法)

文章目录 1. 渲染函数2. JSX / TSX 语法2.1. 基本使用2.2. 使用 vue 中的语法2.2.1. {} 语法2.2.2. v-model 使用2.2.3. v-show 使用2.2.4. v-if 不支持,实现v-if功能2.2.5. v-for 不支持,实现 v-for 功能2.2.6. v-bind 不支持,模拟 v-bind2.…

人工智能值不值得学习?人工智能就业方向及前景

人工智能值不值得学习? 一、人工智能值得学吗? 很多同学想要知道人工智能值得学吗?小编认为是值得的,具体原因有以下两点: 1、人工智能专业前景好,但人才紧缺 根据人工智能行业的专家预计,到2020年&am…

判断字符串变量是否等于某几个字符串常量值中的任意一个

目录 需求写法一:ifequals写法二:Switch-case写法三:Collection.contains( )写法四:StringUtils.equalsAny( ) 需求 判断某个字符串变量是否等于某几个常量值中的任意一个 举个例子,食材供应商只供应食堂以下8种食材…

jQuery-attr()、val()、add()属性和each函数

<!DOCTYPE HTML> <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>jQuery-attr()、add()属性和each函数</title> <script type"text/j…

提醒!手机卡注销前,一定要做的四件事!

现在更换手机卡的情况对小伙伴们来说都是家常便饭的事情了&#xff0c;但是很多小伙伴在手机换号的时候&#xff0c;经常忘记解绑以前手机号绑定的一些业务&#xff0c;为此产生了很多不必要的麻烦&#xff0c;今天的这篇文章就是要告诫大家换号之前一定要做的几件事&#xff0…

通过ChatGPT跟MetaHuman对话,Android/iOS兼容

一、申请ChatGPT的API-KEY 1.通过 openAI官网申请API-KEY 2.参考使用腾讯云函数一分钟搭建 OpenAI 免翻墙代理搭建openAI免翻墙代理 3.通过Postman测试一下openAI函数是否可被调用,传入BearerToken和Body参数,ChatGPT即可返回应答数据 二、启用必要的插件 1.启用文字转语…

Java 文档注释

Java支持三种注释方式。前两种分别是// 和/* */&#xff0c;第三种被称作说明注释&#xff0c;它以/** 开始&#xff0c;以 */结束。 说明注释允许你在程序中嵌入关于程序的信息。你可以使用javadoc工具软件来生成信息&#xff0c;并输出到HTML文件中。 说明注释&#xff0c;…