HI3518EV200烧录uboot、kernel、部署文件系统_mknod: /dev/null: file exists mknod: /dev/console:-程序员宅基地

技术标签: IPC-HI3518EV200  

1.如果没有uboot,那么我们要使用HITool来下载uboot,运行Hitool前先安装jre-6u45-windows-i586,烧录截图如下:
在这里插入图片描述
2.烧完uboot之后,嵌入式系统为了简化,没有使用分区表来自动管理flash,所有都是事先定死的,所以在部署一个嵌入式系统前都要人为的定下一个分区,原则为:
1. 每个分区要足够放镜像;
2. 尽量留一点扩展余地;
3. 在满足前面两条的情况下你随便搞。
(6)我定的分区:
分区名 分区大小 起始地址 截止地址
bootloader 1M 0X00000000 0x00100000 (1024*1024)B
kernel: 3M 0X00100000 0X00400000
rootfs 12M 0X00400000 0X01000000


3.烧录kernel及rootfs,查看手册得到:3518EV200 DDR2地址范围为 80000000-83FFFFFF,
烧录命令:
tftp更新并重新烧写uboot的命令序列:
//向内存0x82000000写入数据,b代表8bit,就是写一个字节,所以这里是从0x82000000开始,每一个字节写ff,0x100000代表count,所以这里是0x100000个count,也就是0x100000个字节//
mw.b 0x82000000 ff 0x100000

//从tftp服务器上下载名为u-boot-hi3518ev200.bin的文件,下载到0x82000000 地址处//
tftp 0x82000000 u-boot-hi3518ev200.bin

//uboot中如果支持spi/qspi flash, 那么可以使用sf的erase, read, write命令操作spi flash,sf probe代表的是选中第几个spi flash,这里是选中的第0个//
sf probe 0

//擦除flash上偏移为0x0地址开始到0x100000之前的块,擦除操作是以erase block为单位的, 要求offset和len参数必须是erase block对齐的//
sf erase 0x0 0x100000

把内存0x8200 0000处的数据, 写入flash的偏移0x0, 写入数据长度为 0x100000(1MB), 操作偏移和长度最小单位是Byte
sf write 0x82000000 0x0 0x100000


tftp更新并重新烧写kernel的命令序列:
mw.b 0x82000000 ff 0x300000
tftp 0x82000000 uImage_hi3518ev200
sf probe 0
sf erase 0x100000 0x300000
sf write 0x82000000 0x100000 0x300000


tftp更新并重新烧写rootfs的命令序列:
mw.b 0x82000000 ff 0xc00000
tftp 0x82000000 rootfs_hi3518ev200_64k.jffs2
sf probe 0
sf erase 0x400000 0xc00000
sf write 0x82000000 0x400000 0xc00000


bootcmd和bootargs对应的设置命令
bootcmd 是uboot完成命令行计数之后,要去执行的命令,这里命令的意思是:先选中spi flash 0, 然后读flash的偏移为0x100000 -0x300000的数据放到内存0x82000000上去,然后跳到0x82000000去启动内核,0x100000-0x300000存放的就是linux内核的分区
1.set bootcmd ‘sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000’

2.set bootargs mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1024K(boot),3072K(kernel),12288K(rootfs)
mem:指定内存的大小,不是必须的
console:使用串口ttyAMA0,波特率115200
root:用来指定rootfs(文件系统)的位置
rootfstype:指定文件系统的类型的


linux系统启动起来之后,做了什么?
1.执行的第一个文件是rcS,依次执行S00到S99之间所有的文件
2.首先执行:S00,生成设备节点
S00devs文件内容如下:创建设备节点
#!/bin/sh
mknod /dev/console c 5 1
mknod /dev/ttyAMA0 c 204 64
mknod /dev/ttyAMA1 c 204 65
mknod /dev/ttyS000 c 204 64
mknod /dev/null c 1 3
注意:其实我们在做文件系统的时候已经做了console、ttyAMA0、null打印就会提示文件已经存在
mknod: /dev/console: File exists
mknod: /dev/ttyAMA0: File exists
mknod: /dev/null: File exists
3.S01:
#!/bin/sh
mkdir /dev/pts
mount -t devpts devpts /dev/pts
mkdir -p /dev/.udev
udevd --daemon #udevd是一个应用程序,–daemon 就是创建那个守护进程,进程创建后内核就可以检测
#为了检测即插即拔的设备
udevadm trigger
4.S80:配置和网络相关的,注意对网络的配置要在:
[ -z “$ipaddr” ] && exit 0 之前
5.S90hibernate 好像是电源管理相关的


MPP部分:
1.我们把mpp下的ko和lib拷到板子里面去,lib下面的类型可以放到/usr/lib下面
2.执行load ko的脚本:
./load3518e -i -sensor ar0130 -osmem 32 -total 64


编译hisi的sample
1./mpp/sample/Makefile.param ,选中如下:
CHIP_ID ?= CHIP_HI3518E_V200
SENSOR_TYPE ?= APTINA_AR0130_DC_720P_30FPS
2. 进入/mpp/sample/venc下面make,放到板子上去运行,
./sampe_venc 0 选择第一种模式,
c 选择第一种码流模式
按两次回车,停止录像,在当前目录下得到三段h.264视频,分别对应1、2、3通道视频,内容一样,分辨率不一样。


把ko lib提前部署到根文件系统里面
1.在osdrv/pub目录下解压rootfs_uclibc.tgz,得到目录rootfs_uclibc,进入目录rootfs_uclibc,提前把/mpp下的ko及/mpp/lib下的库复制到rootfs_uclibc合适位置
2.手工制作rootfs
进到Hi3518E_SDK_V1.0.3.0目录下执行
osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x10000 -o osdrv/pub/rootfs_uclibc_64k.jffs2 注意:这里SPI block大小为64KB,block大小在uboot开始几行打印出来
则在/osdrv/pub下生成rootfs_uclibc_64k.jffs2文件,然后烧录即可。
3.其余的就和上面一样去操作

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_33472414/article/details/100054490

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签