對(duì)于垃圾佬的生活來說,每天逛海鮮市場(chǎng)是必不可少的生活片段,這不,手抖一下又刷到了一個(gè)東付的電子標(biāo)價(jià)簽。
價(jià)格合理,2塊錢一個(gè)不包郵,直接買了N個(gè)。。。算了一下一個(gè)3.5,然后拿到群去炫耀了下,結(jié)果被群友A了一些。進(jìn)入正題,拆解它:
這款應(yīng)該是算最好拆解的標(biāo)價(jià)簽了,而且可以直接無損的安裝還原回去。
先看看屏幕的型號(hào):E029A01
這款屏幕的型號(hào)無論是微雪還是干草干不干,半塘睡不醒,或是撒垃圾車大佬的固件都有適配,所以這次海鮮市場(chǎng)逛值了。
再來看看主板:
哇塞,是瑞薩的DA14585耶,這款芯片是很流行BLE藍(lán)牙,小米手環(huán)也用這個(gè)來做主控,其他大廠也都用,所以資料上應(yīng)該還可以,先去下載了下他的數(shù)據(jù)手冊(cè),打開手冊(cè)看看:
里面有這兩引腳,看來可以入侵了,由于手頭沒好用的JLINK,所以買了個(gè)JLINK-OB和TTL:
等它們的同時(shí)先用萬用表測(cè)下板子上的幾個(gè)金屬觸點(diǎn)跟芯片的關(guān)系,這個(gè)就直接上圖和數(shù)據(jù)了:
DA14585芯片調(diào)試使用相關(guān)口:
- TP4 → RSTTP2&TP10 → ?GNDTP8 → ?P0_5 (RX)TP7 → ?P0_4 (TX)TP1&TP9 → ?VBAT 3VTP3 → ?VDDTP6 → ?SWDIOTP5 → ?SWCLK
墨水屏接口:
- BUSY → P2_0RST ?→ P0_7DC ? → P0_5CS ? ?→ P2_1SDI ? → P0_6SCK ? → P0_0PED_POWER ? → ?P2_3
閃燈IO口:
- D1 → P2_5
OK,這時(shí)候JLINK-OB也到了,我們把它接上:
然后上軟件,基本上我就用這個(gè)3個(gè)
- smartsnippets_toolbox_v5.0.10.2434_windowsKeil 5.36UartAssist.exe
安裝好 Keil和smartsnippets_toolbox后,需要把商家給的JLINK-OB的PJ工具給復(fù)制到對(duì)應(yīng)的目錄;商家會(huì)給你幾個(gè)文件替換破解,然后我們用everything大法來找到這幾個(gè)文件替換,只要替換SmartSnippets Toolbox v5.0.10和KEIL的安裝目錄下的就可以了,路徑下面圖:
TTL后面用的少,因?yàn)镴LINK-OB可以承接所有工作,所以TTL只是用來看調(diào)試信息輸出日志。我們先打開DA的 SmartSnippets Toolbox v5.0.10 工具,然后接上JLINK-OB+上面的黑色價(jià)簽板子,需要焊接好線。點(diǎn)擊NEW
輸入名稱,隨便都可以,然后點(diǎn)SAVE
勾選下JTAG的那個(gè)ID 123456和芯片DA14585-00,然后點(diǎn)擊OPEN
進(jìn)入后藍(lán)色的日志說明沒啥問題,然后再點(diǎn)擊1后點(diǎn)擊2,查看OTP表
OTP表其實(shí)之前在看數(shù)據(jù)手冊(cè)和其他教程的時(shí)候?qū)λ姓`解,所以我們先點(diǎn)2看看
此時(shí)OTP表還是沒有被加載,需要點(diǎn)擊下connect,于是點(diǎn)了下,見證奇雞的時(shí)刻了。
完美,日志還是藍(lán)色的,如果有出現(xiàn)紅色的日志,有辦法的,不慌,一種是用黃色的REST線去碰下紅色的VCC線,讓他REST下,因?yàn)樗?a class="article-link" target="_blank" href="/tag/%E9%AB%98%E7%94%B5%E5%B9%B3/">高電平復(fù)位,所以碰個(gè)一兩秒三秒啥的,然后再斷開JLINK-OB,重新插電,基本上就可以了。或者可以先不拔掉,先REST下3秒,然后再點(diǎn)connect試試,我基本上都這么試過都可以,然后確實(shí)實(shí)在不行的話,檢測(cè)下線的問題,杜邦線插多次就會(huì)萎了,換下就好了,還有就是JLINK-OB,我買的這個(gè)JLINK-OB居然GND虛焊,導(dǎo)致我每次一動(dòng)下GND那個(gè)線PC就會(huì)不斷的發(fā)出USB拔插掉線上線的聲音,所以你們看到的我的JLINK-OB是裸的,其實(shí)TB買回來是有熱縮管套的。。。所以呢,我就把它熱縮管脫掉,拆看了下,GND那邊是被虛焊了,自己補(bǔ)一下,現(xiàn)在穩(wěn)穩(wěn)的,都不紅色報(bào)警日志了。
繼續(xù)之前的,點(diǎn)擊了CONNECT之后,可以看到,OTP是被寫過的(第一二行顯示YES),這時(shí)候是不是有種藍(lán)瘦香菇的感覺?感覺買虧了?
再點(diǎn)下Read From memory 看看有沒有奇雞發(fā)生
當(dāng)。。。嘎了!OTP還是顯示 YES,如果沒有被OTP的話,應(yīng)該是顯示NO
于是乎又上了海鮮市場(chǎng)搞了一些沒有OTP的板子(想把沒有OTP的吹下來,焊接替換掉這個(gè)有OTP的DA14585芯片的板子上),訂單已下,老板人好,是個(gè)墨水屏常年玩家,告訴我,其實(shí)就算OTP了也可以用的。。。納里???
不過做人還是要厚道點(diǎn),單我買了,交點(diǎn)學(xué)費(fèi)了吧。所以等沒被OTP板子到的時(shí)候,我又開始了研究,結(jié)合老哥給的資料和信息我來重新對(duì)OTP認(rèn)識(shí)下;
其實(shí)OTP這部分,得看廠家的人品了,OTP的意思是一次性的寫入,寫后就不能更改了,所以英文翻譯過來是一次編程one time program,但是這么好的芯片不至于設(shè)計(jì)成這樣吧?所以DA14585這里有提供了一個(gè)小技巧(二次啟動(dòng));就是如果你不想讓別人再用的話,就把程序編寫好后生成二進(jìn)制直接寫入OTP,也就是在OTP里面寫你自己的APP,啟動(dòng)的時(shí)候(一次啟動(dòng))就直接加載啟動(dòng)到OTP里了;但是如果你想再次使用做開發(fā)的話,就不能直接把APP寫在OTP里了,那怎么辦?那就在OTP里面燒個(gè)二次啟動(dòng)BOOT的程序呀,這個(gè)二次BOOT結(jié)合外部SPI-Flash進(jìn)行啟動(dòng),程序APP可以燒到外部SPI-Flash里(所以可以多次刷寫APP到SPI里),但是二次啟動(dòng)的BOOT已經(jīng)固化到OTP里了;也就是說,OTP里面如果燒錄的是二次BOOT的話,那就可以多次利用了,那這個(gè)芯片你就繼續(xù)可以玩,不怕被OTP的限制無法使用。所以撿漏OTP的大致流程是(右邊的流程才撿漏哈):
所以我上面為啥說OTP這部分,得看廠家的人品了;所以對(duì)OTP的理解,其實(shí)就是取決于買到的芯片里面的OTP裝了啥程序,如果是二次BOOT的程序你就開心了,如果是正常的APP程序,你就買嘎了。然而二次BOOT程序廠家一般也都是直接去DA官方下SDK編或者直接有官方編好的HEX的文件拿來用了,基本上都是官方標(biāo)準(zhǔn)的代碼,所以大家也可以去下載瑞薩的DA14585X的SDK看,里面有二次BOOT的代碼。所以,怎么說呢,如何判斷OTP里面是不是寫了二次BOOT還是APP,這個(gè)本人也暫時(shí)無法識(shí)別,有知道的老哥哥們教我下,感謝!然后我們繼續(xù),既然流程圖上是說OTP如果被刷入二次BOOT的話SPI-FLASH應(yīng)該刷的是APP,所以我們寫個(gè)APP,燒到SPI-FLASH看看不就可以了?OK,開始前,我們先看看SPI-FLASH是否可以讀取,點(diǎn)擊紅色框,進(jìn)入SPI-FLASH界面
Connect成功
然后讀取32K看看,點(diǎn)擊 Read 32kb按鈕
看來這個(gè)地方可以被讀取的,也可以被擦除的,所以我們先開始寫個(gè)閃燈的代碼吧。
這個(gè)板子其實(shí)還可以用來做開發(fā)板,因?yàn)榘遄由项A(yù)留了一個(gè)LED燈的空焊接,這個(gè)測(cè)了下,是跟芯片的P2_5引腳相通,那么就可以閃燈走起來。
先看下板子對(duì)比圖,一個(gè)是我沒焊接燈的,一個(gè)是我焊接了燈的,那邊我加了個(gè)600歐的R4, LED用了0603的以前的料子焊接到D1,上板子是我焊好的,下面圖是原來的沒有焊R4和D1的對(duì)比。
OK,先去官網(wǎng)或者其他渠道下載DA的SDK,我用的是SDK_6.0.18.1182.1,里面自帶blink工程,路徑參考圖片下面的文件路徑:
閃燈代碼
這里我們要修改一下了,因?yàn)橐W燈,所以引腳要對(duì)得上,先看看代碼里面的
LED_PORT和 LED_PIN是多少。
好家伙是1和0,那么就跟我們的P2_5對(duì)不上了,代碼中的Port 就是P 下劃線5就是PIN,所以P2_5對(duì)應(yīng)的代碼就是 GPIO_PORT_2 和 GPIO_PIN_5,改它!
順便看下上面的串口P0_4,這個(gè)跟我們黑色板子對(duì)得上,所以不需要改。
選一下工程DA14585,點(diǎn)Rebuild
很快就構(gòu)建完成了,基本上沒有報(bào)錯(cuò),妥妥的生成了bin文件。
然后我們進(jìn)行DEBUG看看,燈閃不閃,先進(jìn)行JLINK設(shè)置點(diǎn)擊魔法棒-切換到DEBUG標(biāo)簽頁面USE選擇JLINK,然后點(diǎn)擊Settings
如果你有插著JLINK-OB并且替換好商家給的那幾個(gè)DLL和EXE的話,這里就會(huì)顯示這些信息:
都不用動(dòng),點(diǎn)擊確定就好,外面的那個(gè)點(diǎn)擊OK就好。然后我們開始點(diǎn)DEBUG按鈕
到匯編這個(gè)頁面不用管,直接按F5
按F5后
完美成功閃亮。
本節(jié)我們就只是熟悉開發(fā)環(huán)境,點(diǎn)燈,感興趣的同學(xué)關(guān)注下等待我們下一節(jié)的更新。
關(guān)于墨水屏的學(xué)習(xí),希望大家Enjoy,我們一步一步的會(huì)進(jìn)行更多開源好玩兒項(xiàng)目的開源。