2023年12月31日 星期日

導入海思 Hi3518EV300 影像方案


這是本實驗室導入的新方案...剛做時是 "新", 現在已經是舊方案了XD
剛看到時看起來簡單, 結果一搞就是四年, 中間卡住多次, 這是本實驗室第一片使用應用處理器的板子
運行 Linux 系統, 可以接收並處理相機影像, 然後輸出到檔案或是外部設備

板子正面:

背面:

這是片雙面板, 對, 應用處理器放在 "雙面板" 上, 類似的產品以前看過, 還是帶 SD Ram 的
這產品看上去只有一個 IC, 但封裝裡有兩顆晶片, 包含處理器和 64MB DDR2 記憶體
這麼薄一片擠兩顆晶片真是屌啊, 這樣我就不用畫記憶體的線路了, 那個我是完全沒有信心

這方案可以接相機, 我翻了一下內建可選的感測器, 挑了兩顆來做, 板子正面:

背面:


接下來說明怎麼把這方案搞起來, 首先需要資料包
這方案的資料可以網上找到, 不是官方網站, 須透過 Google
檔案有點大, 要 2GB, 檔名清單如下:

arm-himix100-linux(010).tgz
Hi3516EV200R001C01SPC010.rar
ReleaseDoc(Hi3516EV200R001C01SPC010).rar

請用戶先確保能撈到檔案, 用各種方法!XD
可以網上撈, 可以花錢買, 掏寶有人在賣, 從百度網盤出貨, 或是各種對岸的付費資料網站
找到資料接著確保有編譯環境, 需要一個正確設定過的 ubuntu 18.04 環境
可以是實體 PC 或是 VM, 必須是 18.04 或 16.04, 如果幾年後才看到本文已經搞不到了請直接放棄XD
這篇文有時效的XD 若都有了, 接著要 Linux 上的幾個套件的源碼, 編譯會需要:
gdb-7.9.1.tar.gz
linux-4.9.37.tar.xz
ncurses-6.0.tar.gz
util-linux-2.31.tar.gz
yaffs2utils-0.2.9.tar.gz

然後還有 Windows 的套件, 這是海思的工具需要的:
MCR_R2012a_win32_installer.exe
jre-6u45-windows-i586.exe

如果以上前置動作都完成了就可以繼續, 接著發放 WT-22-B 的線路:wt-22_fixed.pdf

首先是供電, 這顆 SoC 需要三組供電, 一組給週邊, 總共四組
供電順序由外圍到核心, 週邊的 3.3V 先給, 然後再來是 SoC I/O 的 3.3V
接著是記憶體的 1.8V, 最後是 CPU 的 0.9V, 其中 0.9V 要求必須要有 1A 的供電能力
它不會一直吃到 1A, 但瞬間會 1A, 這是官方文件說的, 我沒量, 只照做
板子做出來後可以先確認一下有沒有正確帶起


0.9V 部份原廠設計了一個非常變態的動態調壓, 那個我沒有照做, 我覺得看起來太詭異XD

如上圖, 居然把 PWM 信號透過電阻分壓灌進去 DC-to-DC 降壓的回授網路, 企圖干擾電壓輸出
這我沒有照做, 我覺得這種手法太過土砲, 雖然可以低成本調壓, 但可能會出問題, 怕!
這是我和原廠不同的地方, 剩下電源部份就都是照抄, 原廠文件要求電容數量照貼, 不准偷XD
電源有磁珠隔離, 100MHz 時阻抗 1kΩ, 這顆不好找, 我找代購從掏寶拉回來
這個磁珠是我板上唯一尺寸是 0402 的零件, 所有電容電阻最小都是 0603, 所以這板子沒法做小
0402 以下真的 TM 難搞, 我的眼力不好焊接 0402 容易失敗, 因為原廠選這顆磁珠我才照抄
我公司現在搞手持設備方案用上 0201 的零件, 媽呀那個超靠杯, 解焊下來直接被錫球包起來超難找

接著是聲音的部份, SoC 第 46,47,48 三隻腳外的線路初期測試還沒順利開機前可以都不上
那就是電阻電容組合的電路, 沒有也能開機, 另外那些線路忘記是抄哪的缺了點東西
它是能用, 但建議看原廠手冊, 有說明那部份如何設計

我的電路圖最後一頁是相機和存儲週邊, 這一頁 SoC 的 I/O 供電都是標示 DVDD3318_xxx
這是週邊的電壓準位, 如果外圍設備是 3.3V, 對應接腳的 I/O 供電也是 3.3V
那就可以直接對接不用準位轉換, 在這一頁標示 DVDD3318_xxx 有五處
表示用戶可以視需求配置五種電壓, 相當有彈性, 不過由於我選的相機都是 mipi 的
原廠文件有提到若是 mipi 輸入 AVDD3318_MIPIRX 必須是 1.8V
而 DVDD3318_SENSOR 則視相機而定, 我選的這兩顆相機都必須接 1.8V
所以電路圖上半只能給 1.8V, 其他的則要看週邊, 原廠是 SDIO Wifi 設備配置成 1.8V
我不接 wifi, 全部都是 3.3V 設備, 所以剩下三組全都給 3.3V

相機接口部份原廠要求 i2c 用 1K 上拉, 相機 clock 串 51 歐姆, 我試了量起來波型好像有點怪
不知道是不是和我走線有關, 我上 220 歐姆才正常, 上拉依以往經驗 1K 太小, 所以我換 10K
最後一頁電路圖下方藍線表格是開機設備接腳設定, 這個是給 SoC 內的開機韌體看的
它會選從哪個設備開機, 以及如何配置, 這個弄錯了就開不起來了

接著是 layout, 這方案文件蠻多的, 但 layout 部份只有文字敘述
所以我只能憑感覺做XD 這個就要看別家的文件了, 用 TI 的

High-Speed Layout Guidelines for Signal Conditioners and USB Hubs

然後和海思的說明:

把這兩份文件放到腦袋裡攪一攪(?), 就變成我的高速差動信號三板斧:

1.兩線緊靠盡量等長 2.走線四周包地打孔 3.線長不得超出限制


mipi 信號速度依配置而定, 以海思的配置是 2-lane, 1080P, 30fps
在 IMX307 datasheet 上說每 lane 的傳輸速度為 445.5 Mbps, 比 USB2 還慢一些
上圖黃色線部份是 mipi 的接線, 兩線等長這可以用 KiCAD 的差動線功能下去畫
走線四周放 GND 銅箔, 線走到哪這 GND 就跟到哪, 而且必須是同樣的 GND
TI 文件裡有寫, 如果是類比地或是別的地要避開或夾電容
線長部份海思有給出數據, 以 clock 那組為基準, 誤差控制在 300mil 以內, 總長 4 英吋以內
目前用這三板斧做了幾張板子都沒問題, 不過信號完整度 (開眼) 如何就不知了, 反正我也沒設備驗
而且就像三板斧一樣, 如果全揮下了還是不會動, 那我也沒辦法了, 只能束手就擒XD
還有什麼阻抗限制我也完全不管, 因為就算真的要求板廠做, 做出來我也不知道怎麼驗
要不還就是...當作沒看到, 會動就好XD

其實海思有文件提到信號完整度驗證的方法, 文件名:高速信号测试指导
不過裡面只有四頁, 告訴你用啥型號的設備而已, 然後就沒了
那個很麻煩噢!我看過公司的硬體單位搞過, 那示波器裡面就是裝個 Windows 的
就是台電腦, 量測前要校準要配置, 還有額外治具, 只見他們設備接好
接著就點一堆 UI, 然後跑一下子就出報告, 過程我完全看不懂XD
我曾看過公司那台示波器在二手市場賣, 本來想買, 結果看硬體專家操作後我放棄了
那個真的是專業的, 高速差動信號要量測, 你得先確認怎麼讓示波器看到信號
隨便並根線上去你是在破壞信號, 不是量測, 需要有些治具確保你看到的是當前設備上的
那個我目前沒辦法, 只能瞎賭

做這張板還有一個要注意的, 那就是這個 QFN 超薄封裝的主晶片, 它的接腳非常細
一開始我不知道參考哪個資料畫了個 0.1mm 寬的接腳, 結果焊料都沾不上
後來到處翻文件在 "焊接工艺指导 FAQ" 這文件裡找到推薦尺寸, 才有辦法上件
為了拯救那張畫太細的板, 我試過一些怪招, 像是植球!

不行, 太細就是沾不上, 還有試過地圖砲:一坨錫膏

這個不但沾不上, 還會產出上圖這種用 500 倍顯微鏡才能看到的錫球, 這很容易短路
"焊接工艺指导 FAQ" 文件有提到生產設備要求:

具备 0.35mm pitch QFN 等高密器件的锡膏厚度、面积及体积 3D 在线检测能力。

所以我不打算找廠商量產這東西, 我根本不知道怎麼搞!
目前我是用風槍加熱後夾子壓平, 然後再換很尖的焊槍一根一根腳去刺, 視情況混合拖錫法補強

如果做到這裡看起來好像都可以了, 接著就插電, 開機, 然後不會有任何反應XD
因為沒刷 bios ! (u-boot) 不過在刷前需要先確認這貨是不是活著
確認方法就是量測晶振, 主晶振 24MHz 必須要起振, 不會振就不用刷機了, 一定開不了
確認有起振後接著斷電, 然後示波器接 SPI flash 的 clock 接腳, 然後插電看有沒有 clock 輸出
如果有, 表示 SoC 有開機且開始嘗試讀外部儲存設備, 這樣就可以開始刷機了
沒看到以上兩現象都不要繼續操作, 因為繼續只是浪費時間浪費力氣, 不會有任何用處
排查範圍就看 "硬件设计用户指南" 和 "硬件设计 Checklist"
一個一個來, 用心體會, 人體感覺!XD 這兩份我看了十幾次有了XD
這方案沒有外掛記憶體, 適合已經搞通 arm 級 mcu 的用戶升等打怪用XD
如果是有記憶體的應用處理器就很變態了, 那通常會配電源管理晶片, 供電十幾組
我看過硬體部門桌上一張板子接一堆線多到跟毛球一樣, 問說在幹麻
老哥無奈說:阿就都說和時序無關了, 對方硬要我們量, 就變這樣了
那個記憶體供電精確度要求是小數點第二位, 還要可以動態改變, 有夠 g8 (?)

接著刷機, 要刷機, 要有 bios 是吧, 那麼接著是軟體時間, 首先, 打開你安裝配置好的 ubuntu
我用的是 18.04, 對岸有範例用 16.04, 這兩版應該都行, 安裝並操作 linux 是用戶必須會的
請自行想辦法XD 這說法很靠杯, 但沒辦法, 以前我們上 UNIX 系統管理課程是一學期的課
每週一天, 下午 5,6,7 節課, 那是吃飽正容易想睡的時候, 還要撐三小時, 這不是三兩句話就能解說的
而且海思方案手法比較傳統, 你需要知道常用的 make, automake 這類工具的行為
這樣出錯了才知道怎麼改, 我提供一個 patch 和流程, 中間如果不符預期只能請自行 Google
這裡有兩篇相關文章可參考:

Hi3518EV300芯片linux系统配置USB Camera功能

华为海思3518EV300工作笔记二:开发板支持USB 网络适配器

以下是我的流程:
# 安裝 arm-himix100-linux(010).tgz 這包編譯器
# 安裝套件, 以下這些是我遇到的, 但我系統裡已經有別的開發環境裝過一堆套件, 應該不止這些
sudo apt install gperf texlive uuid-dev
# 解壓縮海思開發包, 然後把前面提的幾個套件的源碼放一起
tar -zxf Hi3516EV200_SDK_V1.0.1.0.tgz
cd Hi3516EV200_SDK_V1.0.1.0
# 現在已經在解壓縮後的目錄裡
./sdk.unpack
# 複製關聯套件源碼包
cp ../linux-4.9.37.tar.xz osdrv/opensource/kernel/
cp ../yaffs2utils-0.2.9.tar.gz osdrv/tools/pc/mkyaffs2image/
cp ../gdb-7.9.1.tar.gz osdrv/tools/board/gdb/
cp ../ncurses-6.0.tar.gz osdrv/tools/board/gdb/
cp ../util-linux-2.31.tar.gz osdrv/tools/pc/cramfs_tool/
cd osdrv
# 編輯 makefile, 把 CHIP?=hi3516ev200 改成 CHIP=hi3518ev300 然後存檔
gedit Makefile
make all
# 打上我的 patch :wt22b.patch
patch -p0 < ../../wt22b.patch
make hiboot
# 配置 kernel, 需將 USB 設為 Gadget, 並打開 UVC 支援

make hikernel_config
make hikernel_compile
# 編譯範例程式
cd ../mpp/sample/
# 編譯範例程式供 IMX307 感測器使用
make
# 編譯範例程式供 GC2053 感測器使用
make SENSOR0_TYPE=GALAXYCORE_GC2053_MIPI_2M_30FPS_10BIT
# 以上兩行指令二選一, 若要換必須 make clean

完成後可以在編譯目錄下找到 u-boot, 路徑:
osdrv/pub/hi3518ev300_spi_image_uclibc/u-boot-hi3518ev300.bin
把這檔用燒錄器放到 SPI flash 開頭的位置即可
海思有 HiTool 刷機工具, 但我試不出來, 印象中已經有刷過一次 u-boot 才能用
如果 SPI flash 是全新空的, 我沒有成功過, 所以我用 RTD2660 那時的工具刷


後來 WT-25 回來了, 就用 WT-25 刷, 參考前篇 用 NUC131 製作 UI 板 的 uart2conn

下命令:
./sfprog /dev/ttyUSB0 ./u-boot-hi3518ev300.bin 0
完成後幹下來再幹到 WT-22 上, 然後插電!
正常的話 uart0 會印出:
System startup                                                                  
                                                                                
Uncompress Ok!                                                                  
                                                                                
U-Boot 2016.11 (Dec 22 2023 - 17:12:40 +0800)hi3518ev300                        
                                                                                
Relocation Offset is: 03733000                                                  
Relocating to 43f33000, new gd at 43e92ef0, sp at 43e92ed0                      
SPI Nor:  NAND:  0 MiB                                                          
MMC:   hisi-sdhci: 0 (SD)                                                       
*** Warning - bad CRC, using default environment                                
                                                                                
In:    serial                                                                   
Out:   serial                                                                   
Err:   serial                                                                   
Net:   No ethernet found.                                                       
Hit any key to stop autoboot:  0                                                
## Error: "distro_bootcmd" not defined                                          
hisilicon #

雖然還沒有畫面, 但已經是輕鬆點亮XD
接下來就可以把整個系統刷上去, 先準備一張 SD 卡, 用戶的 SD 卡槽要能用
我有 WT-20 暴死的經驗, 所以這次一次就成功, 卡可以讀取沒有報錯
把編譯目錄下的這些東西複製出來放到 SD 卡:

osdrv/pub/hi3518ev300_spi_image_uclibc/rootfs_hi3518ev300_64k.jffs2
osdrv/pub/hi3518ev300_spi_image_uclibc/uImage_hi3518ev300
mpp/ko
mpp/sample/uvc_app/uvc_app
mpp/sample/uvc_app/uvc_app.conf

然後海思開發包 Hi3516EV200R001C01SPC010.rar 裡面的
/Hi3516EV200R001C01SPC010/01.software/pc/usb_tools/usb_tools_linux.rar
這包解壓縮出來放到 SD 卡, 此時 SD 卡根目錄應該要有這些東西:

ko/
usb_tools_linux/
rootfs_hi3518ev300_64k.jffs2
uImage_hi3518ev300
uvc_app
uvc_app.conf

接著插卡, 開機, 在 u-boot 下命令:

# 開機命令
setenv bootargs 'mem=32M console=ttyAMA0,115200 clk_ignore_unused rw root=/dev/mtdblock2 rootfstype=jffs2 mtdparts=hi_sfc:1M(u-boot.bin),4M(kernel),11M(rootfs.jffs2)'
setenv bootcmd 'sf probe 0; sf read 42000000 100000 400000; bootm 42000000'
saveenv
# 燒錄 kernel
fatload mmc 0:1 4a000000 uImage_hi3518ev300
sf probe
sf erase 100000 400000
sf write 4a000000 100000 $filesize
# 燒錄 rootfs
fatload mmc 0:1 4a000000 rootfs_hi3518ev300_64k.jffs2
sf probe
sf erase 500000 b00000
sf write 4a000000 500000 $filesize

完成後重開機, 順利的話可以開進系統
            _ _ _ _ _ _ _ _ _ _ _ _                                             
            \  _  _   _  _ _ ___                                                
            / /__/ \ |_/                                                        
           / __   /  -  _ ___                                                   
          / /  / /  / /                                                         
  _ _ _ _/ /  /  \_/  \_ ______                                                 
___________\___\__________________                                              
                                                                                
[RCS]: /etc/init.d/S00devs                                                      
mknod: /dev/console: File exists                                                
mknod: /dev/ttyAMA0: File exists                                                
mknod: /dev/null: File exists                                                   
[RCS]: /etc/init.d/S01udev                                                      
udevd[591]: starting eudev-3.2.7                                                
[RCS]: /etc/init.d/S80network                                                   
Auto login as root ...                                                          
Jan  1 00:04:14 login[824]: root login on 'ttyS000'                             
Welcome to HiLinux.                                                             
None of nfsroot found in cmdline.                                               
~ #

接下來就可以測相機, 如果用戶有 IMX307 接線是 mipi 2 lane 的模組就可以接上去
我這裡有一個來路不明的(?)模組:

這看起來有點噁但它是可以工作的, 開發初期還沒有自己的相機模組時就是這樣測的
注意差動高速線盡量等長, 先剪六根長度相近的電線, 然後兩兩雙絞接上 mipi 的三組線
剩下的控制線長度就隨意, 差不多即可

# 掛載 SD 卡
mount /dev/mmcblk0p1 /mnt
# 配置 USB
cd /mnt/usb_tools_linux/
export VID="0x12d1"
export PID="0x4321"
export MANUFACTURER="Huawei"
export PRODUCT="HiCamera"
export SERIALNUMBER="12345678"
export YUV="360p"
export MJPEG="360p 720p 1080p"
export H264="360p 720p 1080p"
# 連結 UVC, 這工具運行後若大量報錯, 許多目錄沒找到的話就代表 kernel 沒正確配置
# 若只報錯 UAC 則可以工作, 錯誤訊息: can't create directory 'functions/uac1.usb0'
./ConfigUVC.sh
# 載入海思驅動
cd ../ko
./load3518ev300 -i -sensor imx307 -osmem 32M
# 執行 UVC 範例
cd ..
./uvc_app

範例程式 uvc_app 運行後才會開始接收 USB 資料, 這個 USB 處理程序是寫在 user space 的
所以電腦端要在 WT-22-B 的程式運行後才會看到 /dev/video0 節點
接著把 WT-22-B 的 USB 接電腦, 打開 VLC 播放器, 選取影像擷取設備, 就可以看到相機畫面輸出

確認主板工作正常後, 我們就可以開始設計自己的相機板, 我選擇了內建清單裡的 IMX307 和 GC2053
IMX307 是預設感測器, 源碼包預設選它, 所以拿它來試, GC2053 則是對岸廠商格科微電子的產品
它畫素和 IMX307 相同, 感光性能如何我還沒比過, 淘寶上採購當時價格只有 IMX307 的一半不到
加上資料也容易取得, 源碼包裡還有附參考線路可以抄, 所以就選這兩顆

接著發放線路圖:wt-24_fixed.pdf

這兩張板子的接口定義和 Raspberry Pi 用的相機相同, 但準位不同, 不可對接
其實文章開頭照片可以看到許多沒上件的地方被直接短路, 原先是要做相容
但發現做不到, 原因是市售 Pi 的相機模組都是自帶主動式晶振 (有源晶振)
那都是特殊速度, 買不到, 而海思方案則是 SoC 給 clock, 不須晶振
所以拿去 Pi 用會沒有 clock (不確定 Pi 可不可以配置輸出正確 clock)
另外, 就算有晶振, 這種設備還需要配置 Pi 的接收端才能工作, 由於那段沒源碼也沒資料
根本搞不起來, 有看過 IMX307 接 Pi 還多掛了一顆 ISP, 無法直接對接
而反過來, Pi 的相機或許有機會可以給海思用, 但我用的這顆是入門方案
輸入影像最寬只能到 2300 多一些, Pi 的相機影像寬 3000 起跳啊, 這顆性能無法吃 Pi 的相機
所以下一版我自己搞的相機就不再相容 Pi, 撈不到任何好處, 完全沒有必要

兩張板上各有三組線性穩壓, 我選的全是 SGM2019-ADJ, 這系列穩壓有固定電壓版本
但型錄上有市場上不一定有, 所以我就先全部畫 adj 版, 有買到固定電壓的就上固定電壓版
把兩個回授電阻移除換成一個電容即可, 可參考固定電壓版的 datasheet, 裡面有應用電路可參考
這三組穩壓開啟時間透過電阻改變充電速度來控制上電順序, 上電順序是感測器要求的


上圖為兩種感測器, 左邊的是 IMX307, 右邊是 GC2053, 這兩體積和重量都差很多

若比較感測面積其實差不多, IMX307 的像素大小是 2.9 * 2.9um, 而 GC2053 是 2.8 * 2.8um
兩個解析度都是 1920x1080, 每個像素長寬各差 0.1um
兩個看起來都是 BGA 封裝, 但焊接工法完全不同
可以看到 IMX307 底下全平無銲錫, 而 GC2053 則是預先植好球, 若是 BGA 全新的應該要植球
一開始我嘗試對 IMX307 植球:

結果幹上去後量供電都短路, 於是又幹下來重植, 再幹上去, 還是短路, 幹了五次以後

重複拆裝電路板都給擼破皮了, 這時我停下來冷靜的思考一下, 我感覺這不是 BGA, 可能要用 QFN 那套
我觀察了一下, 這貨雖然可以植球, 也可以幹上去, 但是晶片重, 這是陶瓷封裝, 密度很高
感覺雖然有植球成功, 但幹上板後錫球看起來有點扁, 我沒有拍照, 太小了不好拍
如果錫球被壓扁, 而我的 1.2V 部份接點又和 GND 很近, 黏起來應該是輕而易舉
腦內模擬了一下, 我決定調轉槍頭, 換 QFN 工法試試, 然後就成功了, 工法如下
首先, 板上的供電先裝好, 然後確定沒短路可供電

接著 IMX307 焊盤上錫, 然後用吸錫線拓平, 之後若失敗重試就拓平 IMX307 的焊盤重試

電路板的焊盤不要拓平, 那個一兩次就破皮了, 不要這樣做

完成後和未上錫的比, 顏色變銀色, 接著電路板塗上助焊劑, 然後焊槍沾錫在電路板焊盤上拖

讓焊盤吃錫, 焊槍不要出力壓, 這樣也會破皮, 所以輕拖即可, 只拖圓點焊盤, 四角方的不要上錫

然後把 IMX307 幹上去, 這是精密感測器, 溫度設 285 度就好, 慢慢烤, 當看到助焊劑被擠出後
用夾子在 IMX307 表面到處輕壓, 不要側面輕推, 因為它重, 浮不起來, 推了一定移位, 等於白搞
然後憑人體感覺(?)在看到助焊劑擠出後概略算個時間就停止加熱
接著冷卻後不要急著插電, 先量穩壓的對地阻值

如上圖, 0 歐姆就是翻車了, 請重試XD 這不是高功率處理器, 阻抗不會這麼低, 正常至少 10K 以上
重試直到所有供電阻抗都正確才插電, 所有供電沒短路不代表一定成功, 但只要供電有短路一定失敗
若測試能工作以後接著用很尖的焊槍把剛才說不要上錫的四個四角方的焊盤從晶片側面加錫焊接加固
所以繪製電路板零件圖時可以讓四個方焊盤突出去一點比較容易吃錫

IMX307 比較麻煩, GC2053 就只是一般的 BGA 焊接, 請參考前篇:實作 BGA 植球焊接
一樣 285 度, 一次就成功, 輕鬆秒殺XD
完成後我編譯了 IMX307 和 GC2053 的 UVC 範例分別 demo, 以下是 IMX307:


接著是 GC2053:


完工, 畫面輕鬆點亮XD




接著記一些雜記, 這是海思的公版

這東西哪裡來的不清楚!XD 這玩意不便宜啊, 上面裝了一堆電流量測晶片
帶一顆 MCU 和 wifi 網卡, 前面是監視器的相機頭, 有補光燈和 IR cut 切換
精美壓克力框架可以固定在三角架上, 這只是低階品就這麼屌, 高階的公板我看過
有框架有多個相機還有螢幕, 報價六位數, 不論報價還是產品都是企業的規格XD

WT-22-B 和公版放一起對比:

我的體積較小, 功能更少!XD 底下和 WT-23 重疊:

我也有附網卡!(有線的XD)

這是第一次硬體剛打通留下的紀念:

2019 年底取得晶片, 開案備料, 中間做了兩張失敗:

如上圖, 板上有年度, 一年一張, 三年剛好三張, 一開始看原廠線路也是覺得不難, 沒想到摔進坑裡
其實看季度來說應該是兩年多, 2019 年底到 2022 年初, 但剛打通時可以看到上面那打通紀念照
聲音部份零件沒有上, SD 卡也沒上, 相機也沒裝, SD 卡和相機用內建工具就能測
而聲音就必須寫程式驗, 那不是映射成 alsa 設備, 所以打通後接著是混合驗證
一下搞軟體一下搞硬體, 這邊摸一下那邊捅一下(?), 一點一點的組合起來, 差不多三年才完成基礎驗證
想起當年剛開始搞 arm mcu 時也是一樣, 明明條件就沒幾樣, 就是不會動, 經過各種嘗試修改
然後才大概抓到眉角, 這和軟體一樣, 看別人寫的流程好像很直覺, 可是自己若從頭幹起
就會發現一堆問題, 可是軟體改動只要重編, 硬體要花錢啊! 噢, 這裡我要強調不是說軟體好改
因為軟體只要重編, 它的規模就一直堆, 堆到一座高山, 複雜度太高, 改起來絕不比硬體好搞
軟硬體的困難點不同, 如果硬體用戶覺得軟體很簡單大可自己開發測試, 不要找人開發XD
雖然這顆複雜度介於應用處理器和 MCU 之間, 開機條件還是比較多的, 而且因為不熟悉
我不知道哪些條件比較重要, 這些重要條件要全部滿足一項也不能少才會開機
要找到缺的那項不太容易, 做一張出來失敗, 就要一直翻文件探索可能的問題點
海思給的文件還蠻多的, 還好都是中文, 若是英文還怕解讀錯
想了幾個可能的錯誤點以後進行修正, 然後再畫一張板, 然後出來又不會動, 又要繼續翻文件
這張板拖了三年不是一直在做做三年, 而是做幾周後就停下來冥想(?)XD 腦內模擬, 上網搜尋

板子完成後就開始追蹤軟體, 這是應用處理器, 跑 linux 的, 範例程式一大坨
而且開發模式是舊式, 雖然核心是 4.9 版, 但上層 app 的行為是 linux 2.x 時代那種
幾乎全部都放在 user space, 不是把所有驅動都映射到 linux 定義的設備框架上
大概就 uart, spi, i2c, mmc 這種基礎的有對應框架, 影像聲音編碼都是私有的
拆開這軟體又花了我半年多的時間, 然後才摸透它的設計要領
軟體我比較熟悉, 掌握的速度就比硬體快, 本文其實是去年的進度
後來我又跑了影像調校:


以及閃燈同步:


還測了 LCD:

這片 LCD 其實是有問題的, 還在找方案

這些後來都整合到 WT-28 上, 因為這些測試都是要帶出門才能測的, 目前這 WT-22-B 不好組裝攜帶
所以這些驗證都只是評估而已, 看看怎麼改, 真的要驗證不會在這張板上做, WT-28 的驗證蠻多的
估計最快明年底, 那還是最快, 若又卡住了就繼續延

這顆 Hi3518EV300 目前已經從海思官網下架, 找不到了, 現在海思架上的產品全是 4K 級的
1080P 已經落後了XD 不過這顆並沒有消失, 稍微搜尋一下發現這顆疑似被 "轉手"
不知道是仿製還是轉交, 從對岸網上評論看來比較像是轉交, 由湖南国科微电子接盤, 型號為 GK7202V300

$国科微(SZ300672)$

国科Linux芯片开发常见问题&解决办法
內文:该芯片是仿造海思的产品,所以,有些不知道的问题,
可以直接参考海思的解决办法,函数名都是只改了前缀。

由於我板子已經完成, 等需要再掏寶採購時再同時採購一些進來直接換上去看會不會動
這顆在貿易戰之前很便宜啊, 印象中是 18 元人民幣, 換成台幣一百有找, 後來漲到 50 元人民幣
轉手国科微後目前看到也是這個價錢, 不過畢竟裡面是一包兩芯, 還是可以屌打 MCU 的
STM32F4 這種中階的 MCU 也差不多開這價錢, 還不含記憶體, CPU 時脈只有一半不到

海思半導體也算是在中美貿易戰風暴的中心, 因為它有個有錢的爸爸叫華為, 海思前身為其晶片設計中心
華為傳突破美晶片出口管制 揭露旗下海思已具備設計能力
其實這新聞的 "具備設計能力" 說法是錯的, 它本來就有設計能力, 缺的是擺脫西方的生產能力
就中美貿易戰這題目來說, 老共現在是佔上風的, 這不是說老共比美帝先進
而是以 "貿易戰" 這題目來說是佔上風, 因為貿易戰就是要打壓中國, 但很明顯, 效果不好, 被突圍了
現在海思要捲土重來, 拿回它失去的一切! 看起來非常熱血XD 而氣噗噗的美國爸爸就開始新一輪圍堵
這些美國歐洲等西方國家平時講究公平正義, 可是當發現對手趕上來, 就開始搞小動作, 現在變大動作
可見他們的公平正義是建築在絕對優勢之上, 當我遠超過你時我就給你公平, 但現在我快輸了
面子也不要了, 直接翻桌動手打人, 可見人到哪裡都是一樣的, 西方人沒有比較高級
人的行為會受很多外在影響, 民族性, 文化傳統, 教育和社會狀況都會影響最終成果, 所以...
陸客遊台爆驚喜!列12點真實心得:小吃便宜、有人情味、建設落後

1、台灣人保持著「忠孝禮儀」。
3、台灣保持儒家文化,待人和善,令他驚喜。

這位老哥, 如果你十年後再來, 應該會看到全新的台灣, 因為...
游錫堃稱「廉恥是君主政治產物 侯友宜嗆:風馬牛不相及
接下來我們要寡廉鮮恥, 要破除舊思想、舊文化、舊風俗、舊習慣! 這樣競爭才會贏, 要有狼性!
等賴神選上了還可以加碼, 看是要加個詐騙還是賴皮之類的

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。