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

news2024/10/6 20:31:55

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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  Flags
 1      2097kB  33.7MB  31.6MB  primary               lba
 2      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.coloradmin.cn/o/575095.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python按列排序详解

Python按列排序详解 在数据处理中,按列排序是一个非常常见的操作。Python作为一门流行的编程语言,针对按列排序操作也提供了丰富的工具和库。本篇文章将介绍Python按列排序的方法和实例,并为读者提供一些有用的技巧。 为什么要按列排序&…

chatgpt赋能python:Python扫描二维码:优化SEO的有效方法

Python扫描二维码:优化SEO的有效方法 在当今数字化时代,二维码是一种无处不在的技术,用于链接到网站,推广产品等等。然而,很少有人意识到,优化二维码可以提高网站的搜索引擎优化(SEO&#xff0…

MySQL运维篇(一)

一.日志 1.1 错误日志 错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,建议首先查看此日志。 错误日志是默认开启的…

GaussDB内存过载分析

问题现象 数据库进程内存占比较高 长时间占比较高 观察监控平台内存占用的变化曲线,无论当前数据库是否有业务在运行,数据库进程内存占总机器内存的比例长时间处于较高状态,且不下降。执行作业期间占比较高 数据库进程在没有业务执行时&…

chatgpt赋能python:Python文件操作-查找指定内容

Python 文件操作 - 查找指定内容 在日常开发和数据处理中,我们经常需要查找文件中指定的内容。Python 提供了简单而强大的文件操作函数和模块,使得文件查找操作变得简单和高效。本文将介绍如何使用 Python 查找指定内容的方法。 搜索整个文件 最基本的…

2023年最好的10+个WordPress表格插件

WordPress表格插件可让您简洁明了地呈现数据。借助交互式表格,访问者可以根据自己的喜好轻松查看、过滤和排序您的数据,从而提升您网站的用户体验。 但是,询问任何尝试从头开始构建表格的站点所有者,他们会报告说体验可能是一个挑…

Rust每日一练(Leetday0012) 首末位置、插入位置、有效数独

目录 34. 查找元素的首末位置 Find-first-and-last-position-of-element-in-sorted-array 🌟🌟 35. 搜索插入位置 Search Insert Position 🌟 36. 有效的数独 Valid Sudoku 🌟🌟 🌟 每日一练刷题专栏…

【Python】csv与json,哪个才是你的数据之选?

知识目录 一、写在前面✨二、读写csv文件2.1 什么是CSV文件2.2 csv文件的优点2.3 应用 三、读取json文件3.1 json介绍3.2 例题 四、总结撒花😊 一、写在前面✨ 大家好!我是初心,希望我们一路走来能坚守初心! 今天跟大家分享的文…

C语言函数大全-- y 开头的函数

C语言函数大全 y 开头的函数1. yperror1.1 函数说明1.2 演示示例 2. yp_match2.1 函数说明2.2 演示示例 3. y0【零阶第二类贝塞尔函数】3.1 函数说明3.2 演示示例3.3 运行结果 4. y1【一阶第二类贝塞尔函数】4.1 函数说明4.2 演示示例4.3 运行结果 5. yn【n 阶第二类贝塞尔函数…

chatgpt赋能python:Python捕获多个异常:提高程序的健壮性

Python 捕获多个异常:提高程序的健壮性 在编写Python程序时,我们经常会遇到各种异常情况。如果没有适当的异常处理机制,程序就会因为异常而崩溃。为了提高程序的健壮性,我们需要对可能出现的异常情况进行处理。在Python中&#x…

Linux及其常用命令

学习 遇见狂神说 为什么Linux这么重要?一些目录的常识Linux常用命令目录管理文件属性文件内容链接Vim编辑器账号管理用户组管理 为什么Linux这么重要? 因为在企业级开发中,我们的操作对象都是服务器,不是自己的Windows主机了。这…

Anaconda使用总结(conda操作,环境操作,包管理)

Anaconda使用总结 配合Pycharm使用conda命令conda操作环境操作包管理Anaconda源下载包:whl文件本地安装Github源安装PIP和Condaconda换源 其他 背景:Anaconda作为深度学习最流行的pipeline之一,可以方便的修改和导出学习环境,每次…

Adobe推出了PS新功能Generative Fill(创成式填充);生成式 AI 将改变电脑架构;

🚀 Adobe推出了PS新功能Generative Fill(创成式填充),利用生成式AI来增删图像中的任何一处细节。 Adobe推出了PS新功能Generative Fill(创成式填充),利用生成式AI来增删图像中的任何一处细节。…

叮咚音乐门铃芯片方案推荐 WTN6006-8S 低功耗 高性价比

​ 随着物联网技术的不断发展,智能家居已经成为了生活中不可或缺的一部分。作为智能家居中的重要组成部分,门铃同样需要进行智能化升级,在改善用户体验、保障家庭安全方面起到了重要作用。本文将介绍一种基于音乐芯片的叮咚门铃应用方案…

[数据集][目标检测]目标检测数据集大白菜数据集VOC格式1557张

数据集格式:Pascal VOC格式(不包含分割路径的txt文件和yolo格式的txt文件,仅仅包含jpg图片和对应的xml) 图片数量(jpg文件个数):1557 标注数量(xml文件个数):1557 标注类别数:1 标注类别名称:["cabbage"] 每…

chatgpt赋能python:Python编程中的按键事件

Python编程中的按键事件 在Python编程中,按键事件是一项非常有用的功能。通过监控按下键盘中的特定键,您可以触发程序的某些特定操作,这些操作可用于增强应用程序的功能和用户体验。 按键事件的基本工作原理 Python中的按键事件基于图形用…

Java——TCP UDP Socket编程

目录 一、网络的相关概念 (一)网络通信 (二)网络 (三)ip地址 (四)ipv4地址分类 (五)域名 (六)网络通信协议 (七&a…

数据结构 第四章:串

文章目录 一、串的定义和实现1.1串的定义和基本操作1.1.1串的定义1.1.2串的基本操作1.1.3小结 1.2串的存储结构1.2.1顺序存储1.2.2链式存储1.2.3基于顺序存储实现基本操作1.2.4小结 二、串的模式匹配2.1什么是字符串的模式匹配2.2朴素模式匹配算法2.3KMP算法2.4求next数组2.5KM…

python+vue空巢老人网上药店购药系统9h2k5

本空巢老人购药系统主要包括三大功能模块,即用户功能模块、家属功能模块和管理员功能模块。 (1)管理员模块:系统中的核心用户是管理员,管理员登录后,通过管理员功能来管理后台系统。主要功能有:…

LCD 显示

概述 LCD显示控制模块接收 MCU 送过来的数据,按一定规律储存在显示 RAM 中,并根据显示 RAM 中的数据驱动 LCD 显示屏来实现期望的字符显示功能。 主要特点: ⚫ 最大支持 840 、 642 、 444 的显示段数 ⚫ 1/3bias 、 1/4bia s ⚫ 16 级灰度可…