【第一季】全面認識海思HI3518E方案和SDK環境搭建

文章內容來自朱有鵬的《朱老師物聯網大講堂》的嵌入式企業級項目–海思HI3518E方案視頻編解碼傳輸深度學習,轉載請註明出處


一,視頻設備開發的技術流


1、視頻從產生到被消費的整個流程
(1)基本認知:視頻是由單幀圖像以每秒x幀的速率連續組成的,單幀圖像類似位圖。
(2)原始視頻產生:鏡頭和sensor(鏡頭把光線都聚集到sensor上,sensor把光信號轉換成模擬電信號,由內部集成的AD轉換器轉換成二進制數列)
(3)圖像處理:ISP(image signal processing)
(4)視頻編碼壓縮:h.264/h.265壓縮算法,運算,內置DSP進行壓縮運算的。
(5)視頻流傳輸:網絡傳輸、http/rtsp等
(6)視頻存儲:打包成MP4等格式存儲,等待調閱
(7)視頻回放:解碼+播放

2、視頻行業的商業角度分段
(1)主芯片商、sensor、鏡頭等分立原件廠商
(2)模組廠商:買來芯片,sensor和鏡頭等原件進行基礎開發,讓設備能夠採集視頻並處理後,通過視頻編碼壓縮,最終能進行傳輸
(3)視頻服務器廠商,類似大拿這種
(4)面向解決方案的方案開發商:買來模組廠商的模組和視頻服務器廠商的服務,在應用層進行各種滿足解決方案需求的開發
(5)工程商或銷售商

3、幾個疑問點
(1)視頻爲什麼要編碼和解碼?
原始的視頻太大了,通過網絡傳輸,因爲網絡也有一定的帶寬,把視頻進行編碼是爲了更好地通過網絡進行傳輸

(2)HI3518E主要解決什麼問題?
視頻的編解碼算法

(3)爲什麼使用linux而不是其他os?
Linux裏面的網絡協議棧和各種網絡的資源最多。


二,HI3518E方案系統整體架構介紹


1、硬件上
(1)HI3518E單芯片提供:CPU+DSP+內置64MB DDR + ETHERNET MAC
(2)外置16MB的SPIFlash用來存放程序(uboot、kernel、rootfs、app)
(3)SDcard擴展提供用戶數據區
(4)板載ethernet PHY和USB HOST擴展WIFI提供聯網能力
(5)sensor接口(並行數據通道+I2C控制通道)提供主板和sensor鏈接
(6)串口作爲調試口和linux系統控制檯

2、軟件上
(1)SPIFlash分區燒錄uboot.bin、zImage、rootfs,並設置合理的環境變量使系統啓動。
(2)sensor、ethernet等硬件均需要驅動支持
(3)app實現視頻採集、編碼壓縮、網絡傳輸等核心工作
(4)各種專業工作(譬如利用內置DSP實現h.264編碼壓縮)都由海思開發好並以ko的形式提供,有API文檔參考,app編寫者在sample的幫助下逐步實現自定義的功能。


三,海思SDK編譯及問題解決


海思的SDK編譯問題解決1

海思的SDK編譯問題解決2

四,flash分區和系統鏡像(uboot,kernel,rootfs)的燒寫

1、flash分區

(1)因爲嵌入式系統爲了簡化,沒有使用分區表來自動管理flash,所以都是事先定死的。所以在部署一個嵌入式系統前都要人爲的定下一個分區
(2)原則1:每個分區要足夠放鏡像;原則2:儘量留一點擴展餘地。原則3:在滿足1和2情況下你隨便分區。
(3)經過上個階段我們編譯完SDK就可以得到uboot,kernel,rootfs(_64K.jffs2)三種鏡像,所以按照以下分區進行燒錄即可

在這裏插入圖片描述

分區名 分區大小 起始地址 截至地址
bootloader: 1M 0x00000000 0x00100000
kernel: 3M 0x00100000 0x00400000
rootfs: 12M 0x00400000 0x01000000

1.裸機燒錄uboot

(1)什麼叫裸機燒錄?設備是空白的,未經燒錄的,就叫裸機。
(2)裸機燒錄一個設備有2種方案:

  • 第一種是用外部燒錄器來燒錄板載flash(外部燒錄器燒錄SPIFLASH時和HI3518E沒有關係,有時候經常SPIFLASH先單獨通過燒錄器和支架來燒錄好鏡像,然後再把燒錄過鏡像的SPIFLASH焊接到板子上。現在很多燒錄器也可以在板子上直接燒了)
  • 第二種是通過主芯片提供的isp下載的機制來間接燒錄板載flash,我們現在就是用第二種

運行海思官方的燒錄軟件Hi_tool來燒錄uboot
在這裏插入圖片描述
在這裏插入圖片描述
擴展:各種常見flash的簡單講解
(1)買到的flash芯片,其實是內部的flash存儲顆粒+外部封裝的控制器來構成的。
(2)像EMMC、SD、MMC、SPIFLASH、NANDFLASH等差異都在於控制器。
(3)SPIFLASh的優勢就是接口簡單,主芯片只需要支持SPI接口就可以外接。很多MCU或者CPU在需要外擴一個8M/16M/32M/64M這麼大級別的外部存儲器時,選擇SPIFLASH是很好的。
(4)NANDFLASH其實控制器是最老的,像EMMC、SD等都比NANDFlash要更新一些,更好一些。


2.kernel和rootfs燒錄與啓動系統


1、燒錄kernel
(1)SDRAM地址範圍:80000000-83FFFFFF
(2)前提是tftp得能ping通,能下載,才能燒錄。 網絡地址:ipaddr 192.168.1.10, serverip 192.168.1.141

在這裏插入圖片描述

2、燒錄rootfs
燒錄命令如下


tftp更新並重新燒寫uboot的命令序列

mw.b 0x82000000 ff 0x100000
tftp 0x82000000 u-boot-hi3518ev200.bin
sf probe 0
sf erase 0x0 0x100000
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

3、uboot的各環境變量介紹和設置

附2:正確的bootcmd和bootargs對應的設置命令:(設置完成記得save命令保存)

set bootcmd 'sf probe 0;sf read 0x82000000 0x100000 0x300000;bootm 0x82000000'

set bootargs mem=32M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2mtdparts=hi_sfc:1024K(boot),3072K(kernel),12288K(rootfs)

在這裏插入圖片描述


參考博客:分析rootfs啓動後做了什麼



五,mpp的部署研究和實戰


1、mpp的文件結構詳解
(1)ko
(2)lib
(3)sample
(4)其他幾個
參考博客:mpp的文件分析

2、部署ko文件和lib文件

SDRAM範圍:80000000-83FFFFFF
燒錄到板子的linux系統內存:0x80000000-0x81FFFFFF MMZ內存(mpp所需的內存):0x82000000-0x83FFFFFF

在這裏插入圖片描述

3、開發板啓動自動掛載主機
(1)在/etc/profile中添加設置網卡IP地址
(2)在/etc/profile中添加自動掛載主機nfs服務器
(3)開機自動安裝mpp的各種模塊驅動
在這裏插入圖片描述


六,sample的編譯和測試


1、sample的編譯
(1)sample結構簡單瀏覽:sample程序在osdrv同級目錄下的mmp文件夾中
(2)Makefile研究:首先先看一下Makefile.param,發現裏面的兩個需要修改的地方

1、默認選中的事HI3516C,所以我們屏蔽掉默認的,打開我們的HI3518E_V200;
2、鏡頭默認選中的是SONY的鏡頭,同樣,我們屏蔽默認的,打開AR130之後就沒有什麼需要改動的了。

在這裏插入圖片描述
(3)編譯得到sample_venc
在這裏插入圖片描述

2、sample的部署和測試
(1)nfs方式運行sample
(2)得到錄像文件xx.h264
(3)導出xx.h264到windows下用vlc播放器播放驗證
在這裏插入圖片描述
在這裏插入圖片描述

3、鏡像重新制作
(1)在編譯目錄的osdev/pub/下找到rootfs_uclibc.tgz,解壓開
(2)按照上節和本節驗證成功的部署步驟部署整個rootfs

在這裏插入圖片描述

(3)手工製作rootfs.jffs2鏡像,再燒錄測試即可

osdrv/pub/bin/pc/mkfs.jffs2 -d osdrv/pub/rootfs_uclibc -l -e 0x10000 -o osdrv/pub/rootfs_uclibc_64k.jffs2

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章