当前位置: 首页 > news >正文

嵌入式 uboot、fs、kernel制作和烧录简记-hi3518c

NULL RAM :

mkdir ramdisk_test  临时挂在点

dd if=/dev/zero of=rootfs.ramdisk bs=1k count=10000 建立空硬盘//15000(15M)

losetup /dev/loop0 rootfs.ramdisk 挂在临时硬盘

mke2fs -m 0 /dev/loop0 格式化此硬盘

mount –t ext2 rootfs.ramdisk ./ramdisk/ramdisk_test/

cp -rf ./rootfs_uclibc/* ./ramdisk/ramdisk_test/ 拷贝文件系统

(umount ramdisk_test(rootfs.ramdisk---ramdisk-real))

 

默认:

使用tftp之前要对uboot-env中的ipaddr和serverip(宿主机local-host)进行设置
{
 setenv ipaddr 10.10.1.242
 setenv serverip 10.10.1.103
}


setenv bootargs mem=64M console=ttyAMA0,115200 root=/dev/mtdblock4 rootfstype=jffs2 mtdparts=hi_sfc:256k(boot)ro,128k(env),128k(conf),3072k(os),12800k(rootfs)


ramdisk启动:

(12M)setenv bootargs mem=64M console=ttyAMA0,115200 root=/dev/ram0 rw ramdisk=32768 initrd=0x82500000,10M init=/linuxrc mtdparts=hi_sfc:256k(boot)ro,128k(env),128k(conf),3072k(os),12800k(rootfs);tftp 0x82500000 rootfs.ramdisk;tftp 0x82000000 uImage

(16M)setenv bootargs mem=64M console=ttyAMA0,115200 root=/dev/ram0 rw ramdisk=32768 initrd=0x82500000,16M init=/linuxrc mtdparts=hi_sfc:256k(boot)ro,128k(env),128k(conf),3072k(os),16384k(rootfs);tftp 0x82500000 rootfs.ramdisk;tftp 0x82000000 uImage

nfs启动

 

tftp uclibc_64k.jffs2
sf probe 0
sf erase 0x380000 0x600000
sf write 0x80008000 0x380000 0x500000

 


bootcmd sf probe 0\;sf read 0x82000000 0x80000 0x300000\;bootm 0x82000000

 

 

setenv spi_boot setenv bootargs mem=64M console=ttyAMA0,115200 root=/dev/mtdblock4 rootfstype=jffs2 mtdparts=hi_sfc:256k(boot)ro,128k(env),128k(conf),3072k(os),12800k(rootfs)\;sf probe 0\;sf read 0x82000000 0x80000 0x300000\;bootm 0x82000000


模组Uboot-info:ov9712

bootdelay=1
baudrate=115200
netmask=255.255.255.0
bootfile="uImage"
ipaddr=192.168.2.100
serverip=192.168.2.15
ethaddr=00:01:02:03:04:05
bootargs=mem=64M console=ttyAMA0,115200 root=/dev/mtdblock4 rootfstype=jffs2 mtdparts=hi_sfc:256k(boot)ro,128k(env),128k(conf),3072k(os),3584k(rootfs),9088k(home),128k(vd)
bootcmd=sf probe 0;sf read 0x82000000 0x80000 0x300000;bootm 0x82000000
stdin=serial
stdout=serial
stderr=serial
verify=n
ver=U-Boot 2010.06 (Jan 05 2013 - 18:34:21)

Environment size: 475/131068 bytes

 

setenv bootargs 'mem=64M console=ttyAMA0,115200 root=/dev/mtdblock4 rootfstype=jffs2 mtdparts=hi_sfc:256k(boot)ro,128k(env),128k(conf),3072k(os),12800k(rootfs)'


sf probe 0;sf erase 0x0 0x80000;sf write 0x82000000 0x0 0x80000;
烧录内核:
    sf probe 0;mw.b 82000000 ff 300000;tftp 82000000 uImage;sf erase 80000 300000;sf write 82000000 80000 300000
   //mw.b表示按字节显示  mw: 对RAM中的内容写操作, mw 32000000 ff 10000(把内存0x32000000开始的0x10000字节设为0xFF)
   
   
烧录文件系统:
    sf probe 0 ;mw.b 82000000 ff C80000 ;tftp 82000000 rootfs_64k.jffs2;sf erase 380000 C80000 ;sf write 82000000 380000 C80000
    注:15M文件系统的时候偏移量是F00000 12M(C80000 )
    
文件系统制作:
    
    以前的内核系统支持的是yaffs文件系统,现在使用的是yaffs2文件系统,因此需要不同的制作工具,我们在此把它称为mkyaffs2image,按照上面的命令解压后它会被安
装到/usr/sbin目录下,并产生2个文件:mkyaffs2image 和mkyaffs2image-128M。

yaffs:
  
   #mkyaffs2image root_qtopia root_qtopia.img
   
cramfs:
   
   ./mkcramfs _install rootfs.cramfs
   
   
   
  uboot env:ar0130
  
  
jffs2:
mkfs.jffs2 -d ./rootfs -l -e 0x20000 -o jffs2-root.img (128K)

(qy)mkfs.jffs2 -d ./joseph_rootfs/ -l -e 0x10000 -o rootfs_kj_last.jffs2 (64K)


设置好之后直接下载对应文件系统就可以在内存中运行文件系统了:
tftp rootfs.ramdisk

 

注:使用串口工具进行烧录的时候把tftp改成loadb

 ubootenv:
  setenv bootargs mem=64M console=ttyAMA0,115200 root=/dev/mtdblock3 rootfstype=jffs2 mtdparts=hi_sfc:256k(boot)ro,256k(env),3584k(kernel),11264k(rootfs)
 kernel:
    sf probe 0;mw.b 82000000 ff 300000;loadb 0x82000000;sf erase 80000 300000;sf write 82000000 80000 300000
    
    
 HI3518C(最终的):
 Spi(cs1): 
 Block:64KB 
 Chip:16MB 
 Name:"W25Q128B"
 spi size: 0x16777216
 chip num: 1
 5 cmdlinepart partitions found on MTD device hi_sfc
 Creating 5 MTD partitions on "hi_sfc":
 0x000000000000-0x000000040000 : "boot"
 0x000000040000-0x000000060000 : "env"
 0x000000060000-0x000000080000 : "config"
 0x000000080000-0x000000380000 : "kernel"
 0x000000380000-0x000000e80000 : "rootfs"
 Fixed MDIO Bus: probed

相关文章:

  • http_load
  • Object传入String类型和其他
  • centos 命令集合
  • 一种节省空间的交换变量的基本算法
  • 腾讯优测携手开源中国码云平台提供安卓项目质量一键分析
  • Git 更新操作
  • 嵌入式Linux系统运行流程图
  • Hybrid App 和 React Native 开发那点事
  • 归并排序(Merge Sort)
  • 装B技能GET起来!Apple Pay你会用了吗?
  • Tcp实现简单的大小写转换功能
  • uboot里读sd卡内容
  • Redis 主从复制
  • printk打印指针变量
  • 123
  • 07.Android之多媒体问题
  • angular2开源库收集
  • spark本地环境的搭建到运行第一个spark程序
  • 第十八天-企业应用架构模式-基本模式
  • 工作手记之html2canvas使用概述
  • 精彩代码 vue.js
  • 浏览器缓存机制分析
  • 前端
  • 跳前端坑前,先看看这个!!
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • 找一份好的前端工作,起点很重要
  • #1015 : KMP算法
  • #if和#ifdef区别
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (解决办法)ASP.NET导出Excel,打开时提示“您尝试打开文件'XXX.xls'的格式与文件扩展名指定文件不一致
  • (论文阅读26/100)Weakly-supervised learning with convolutional neural networks
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • .net 4.0 A potentially dangerous Request.Form value was detected from the client 的解决方案
  • .NET 6 Mysql Canal (CDC 增量同步,捕获变更数据) 案例版
  • .NET 使用配置文件
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NET/C# 使窗口永不获得焦点
  • .Net中间语言BeforeFieldInit
  • // an array of int
  • @FeignClient注解,fallback和fallbackFactory
  • @modelattribute注解用postman测试怎么传参_接口测试之问题挖掘
  • @基于大模型的旅游路线推荐方案
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [20170713] 无法访问SQL Server
  • [C++]二叉搜索树
  • [CUDA手搓]从零开始用C++ CUDA搭建一个卷积神经网络(LeNet),了解神经网络各个层背后算法原理
  • [hive] 窗口函数 ROW_NUMBER()
  • [HXPCTF 2021]includer‘s revenge
  • [Lua实战]整理Lua中忽略的问题
  • [Manacher]【学习笔记】
  • [PAT] 1041 Be Unique (20 分)Java
  • [Poetize6] IncDec Sequence
  • [Pyhton]weakref 弱引用