第3章 海思平台初探:认识Hi3516DV300开发板
好,咱们正式开始接触硬件了。
这一章,我带大家看看Hi3516DV300这块板子。说实话,我第一次拿到这块开发板时,第一反应是——这玩意儿比我想象的小多了。但别小看它,麻雀虽小五脏俱全。
3.1 开发板硬件概览
Hi3516DV300是海思针对智能视觉领域推出的一颗SoC。它集成了ARM Cortex-A7双核处理器,主频能跑到900MHz。我刚开始做项目时,总觉得主频越高越好,后来发现对于嵌入式视觉应用,900MHz其实已经够用了。
这块板子的核心参数,我整理了一下:
| 项目 | 参数 |
|---|---|
| CPU | ARM Cortex-A7 双核 @ 900MHz |
| DDR | DDR3/DDR3L,最大支持2GB |
| Flash | SPI NOR/NAND Flash,eMMC |
| 视频编解码 | H.264/H.265 硬件编解码 |
| 网络 | 百兆以太网 |
| 接口 | UART、I2C、SPI、USB、SDIO等 |
嗯,这里要注意一点。这块板子的DDR和Flash是板载的,不是插槽式的。这意味着你没法像玩PC一样随便换内存条。所以选型时一定要确认好容量。
3.2 查看芯片手册
做嵌入式开发,不看芯片手册等于闭着眼睛开车。我个人习惯是,拿到一块新板子,先翻三样东西:
- Datasheet:芯片的电气特性、引脚定义、封装信息
- User Manual:寄存器描述、功能模块说明
- Hardware Design Guide:硬件设计参考,包括电源、时钟、复位等
我在项目中遇到过一件事。有次调试一个I2C设备,死活不通。折腾了两天,最后发现是引脚复用配置错了。你想想看,芯片手册里明明写着GPIO6_3可以复用为I2C0_SDA,但我没仔细看复用表,直接当普通GPIO用了。嗯,从那以后我再也不敢跳过引脚复用章节了。
Hi3516DV300的芯片手册,重点关注这几个章节:
- 第2章:系统架构——了解整体框图
- 第5章:内存映射——DDR和Flash地址空间
- 第12章:启动模式——Boot ROM和启动流程
- 第18章:时钟与复位——系统时钟树
3.3 了解DDR与Flash分区
移植鸿蒙系统,分区规划是重头戏。说白了,就是决定哪块内存放什么。
Hi3516DV300的典型分区方案,我给大家画个简表:
| 分区名称 | 起始地址 | 大小 | 用途 |
|---|---|---|---|
| boot | 0x00000000 | 1MB | U-Boot引导程序 |
| kernel | 0x00100000 | 8MB | 鸿蒙内核镜像 |
| rootfs | 0x00900000 | 32MB | 根文件系统 |
| userdata | 0x02900000 | 剩余空间 | 用户数据 |
为什么会这样分区?因为Flash的读写速度比DDR慢得多。所以启动时,U-Boot会把内核从Flash拷贝到DDR中运行。DDR才是程序真正跑的地方。
DDR的地址空间,Hi3516DV300默认从0x80000000开始。这个地址在U-Boot和内核的设备树里都要对应上。移植时最容易出问题的地方就在这里——地址对不上,系统起不来。
3.4 搭建串口与网口环境
好了,理论说完了,咱们动手搭环境。
3.4.1 串口连接
串口是嵌入式开发的「生命线」。系统起不来、内核panic、调试信息,全得靠它。
Hi3516DV300开发板上通常有一个4针的UART接口。接线方式很简单:
- GND接GND
- TXD接RXD
- RXD接TXD
- VCC一般不接(开发板自供电)
串口参数:115200波特率,8数据位,1停止位,无校验。这个参数在U-Boot和内核里都要设置一致。
我推荐用MobaXterm或者PuTTY。Windows下记得装好USB转串口的驱动。Linux下直接用minicom或者screen就行。
快速验证串口:接好线后,给开发板上电。如果串口终端能看到启动日志,说明连接成功。如果啥都没有,先检查接线,再检查波特率。我遇到过最坑的一次,是线接对了但地线没接,信号飘得乱七八糟。
3.4.2 网口配置
串口搞定了,接下来配网口。网口主要用于文件传输——比如把编译好的鸿蒙镜像通过TFTP或NFS下载到开发板上。
Hi3516DV300的网口是百兆的,用RJ45接口。配置步骤:
- 用网线把开发板和电脑连到同一个路由器或交换机
- 在U-Boot中设置IP地址:
setenv ipaddr 192.168.1.100 - 设置服务器IP(你的电脑):
setenv serverip 192.168.1.10 - 保存环境变量:
saveenv
然后就可以用TFTP下载内核了:
tftp 0x82000000 uImage
这条命令的意思是把电脑上的uImage文件下载到开发板DDR的0x82000000地址。为什么是这个地址?因为要避开U-Boot自身占用的空间。
3.5 本章小结
这一章我们干了三件事:认识了Hi3516DV300开发板的硬件、看了芯片手册的关键章节、搭好了串口和网口环境。
嗯,说实话,这些准备工作看着琐碎,但真到了移植阶段,你会发现每一步都省不了。尤其是串口,没有它你连系统为什么起不来都不知道。
下一章,咱们开始搭建鸿蒙系统的编译环境。到时候你会用到今天配好的串口和网口,所以务必确保它们都能正常工作。
有问题随时翻芯片手册,别像我当年那样凭感觉乱试。好,今天就到这儿。