《海思Hi35xx开发日记——之No.2》

《海思Hi35xx开发日记——之No.2》 先行者 2023-10-26 15:46:21 996

 前言:

       在上一篇我们已经将海思Hi3519AV100的开发环境搭好了,正所谓是骡是马拉出来溜溜。电路板本身是个死物,要想让它活起来就必需给它注入灵魂。我们要将编译成生的固件烧写进板子上,让它能跑起来!

      刚开始的时候我还想通过串口+TFTP的方式去烧写固件,但一上电串口上什么信息也没有打印出来,只有一些空格出来。通过阅读《Hi3519AV100 SDK 安装及升级使用说明》手册得知,如果单板没有 uboot,就需要使用 HiTool 工具进行烧写。我们知道,要板子能跑起linux应用程序最少要烧写3个部分的固件,分别为uboot、kernel以及rootfs。即然是有3个部分的固件要写到nand flash里,那就要面临着划分系统分区。我们参考《Hi3519AV100 SDK 安装及升级使用说明》里的。​​​易百纳社区

1,在HiTool工具里烧写uboot进板子,其实可以设置好工具一次性将uboot、kernel、rootfs全烧写进去的。但我没有用这方式,而是想uboot用HiTool烧写;kernel和rootfs用串口+TFTP的办法去烧写。易百纳社区

选择好Flash类型、要烧写的文件就可以点“烧写”按钮,再给板子重新上电就可以看到进度条了。当然了,因为我们这是通过串口的方式下载的,所以前提是板子的串口必需是连通好在PC上。

2,我们要通过TFTP下载kernel、rootfs进板子里,重启板子我们就可以在串口终端上看到有打印信息了(波特率要设置为115200)

易百纳社区

我们先来一下 printenv来看看当前的环境变量是怎么样的。

易百纳社区

我们通过以下几条命令去烧写kernel进去:

1) mw.b 0x22000000 ff 0x100000  /* 对内存初始化*/;

2) tftp 0x22000000 uImage_hi3519av100_smp  /* Kernel下载到内存 */;

3) sf  probe 0  /*探测并初始化SPI-Nor flash*/;

4) sf erase 0x100000  0x400000  /*擦除 4M大小*/;

5) sf write 0x22000000  0x100000 0x400000  /*从内存写入SPI-Nor Flash*/;但这样一来就发现有问题了 !      

易百纳社区

很明显它提示说SPI Flash初始化失败,很有可能我们的硬件不是SPI Nor Flash。没错,它说的很对,我们的确不是Nor Flash,而是nand Flash;它们两所使用的命令还真是不一样的!于是我们得用另一套命令:

1) mw.b 0x22000000 ff 0x1000000                     /* 对内存初始化*/

2)tftp 0x22000000 uImage_hi3519av100_smp   /* Kernel下载到内存 */

3)nand erase 0x100000 0x400000                     /*擦除 4M大小*/

4)nand write 0x22000000 0x100000 0x400000  /*从内存写入Nand Flash*/

好了,这一次没问题了。我们接着来烧写rootfs!

1) mw.b 0x22000000 ff 0x2000000

2) tftp 0x22000000 rootfs_hi3519av100_2k_4bit.yaffs2;

3) nand erase 0x500000 0x1400000;

4) nand write.yaffs 0x22000000 0x500000 0xae4800

       这里要注意一点: nand write.yaffs命令中,offset是0xae4800,是对应了rootfs.yaffs2的大小,这里需要注意,这个offset必须是nand pagesize的整数倍,不然会有报错。即(512+16或者2048+64)的整数倍。所以,在烧录的时候,我们可以直接根据tftp下载的rootfs.img的大小,来设置这个offset。我们可以在uboot阶段用 nand info命令来查看当前nand flash的一些基本信息。


3, 好了,那么我们现在板子可以跑起来了吗?还不行,还要设置一下它的env(环境变量)。

   1)setenv bootargs mem=480M console=ttyAMA0,115200 clk_ignore_unused root=/dev/mtdblock2 rw rootfstype=yaffs2 init=/linuxrc mtdparts=hinand:1M(uboot),4M(kernel),20M(rootfs) /*设置rootfs走那个分区、波特率、内存大小、串口以及系统分区表*/

   2)setenv bootcmd nand read 0x22000000 100000 400000 \; bootm 0x22000000  /*设置从nand flash的某一个地址开始读kernel进内存,并且从内存中的这个地址开始跑*/

       好了,这样我们的板子就可以算是跑起来了。当然还有很多要设置的地方,但这一篇我们不写。在下一篇会提到的。


注意: 其实我这边一开始并没有跑那么的顺利,在刚刷完uboot时,想要TFTP都没有成功。由于刚开始没什么经验最后才知道我们板子硬件上和海思官方的还有点出入,网卡都不一样,所以要在uboot里改东西才行。由于目前是和第三方合作的,他们提供uboot、kernel;我们自己做rootfs和应用,于是直接问他们要来了uboot和kernel的固件刷上去的。这两部分只能留待以后去研究了,好了,今天就这样,明天见!

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 3 1 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
先行者
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区