HP39GS的物理存儲結構由兩部分組成:一是Nor Flash存儲的系統固件,二是SRAM存儲的用戶程序。
Nor Flash型號為:SST39VF800A 70-4C-EKE容量1MB
SRAM型號為:LY62L12816ML 70LL 1035 128*16bit 容量256KB
實際上HP39GS 2.22固件占972KB,Flash上空余約52KB,由於flash中的內容在Aplet程序中僅能讀取,而想寫入自定義的數據只能放在固件二進制文件后面,使用固件升級程序下載。使用起來是非常不方便的,即便如此,利用固件里的空白區和剩下的空余字節,依舊可以放下88的GB2312中文字庫。帶88中文中文字庫的固件大小為1004KB,可見利用flash存儲自定義數據非常不方便,僅能存儲字庫這樣寫入后只讀的內容。
HP39GS所有用戶運行時產生的文件都保存在SRAM中,包括下載的Aplet程序,使用內置basic語言編寫的腳本程序,自定義公式,矩陣等等。這意味這當主電池(AAA)被移除,而備用電池(CR2302)電量耗盡,且機內電容(470uF 25V)沒電后,用戶產生的數據將丟失。且SRAM對於用戶可用容量僅199KB,這由於系統機器土星模擬器占用了部分。
得益於HP39GS豐富的外設接口,包括TTL電平串口,Irda紅外接口,蜂鳴器接口。其中蜂鳴器接口直連GPIO B2,而串口與紅外則是GPIO與RXD,TXD功能復用口,故可借此鏈接一些外設進而拓展HP39GS計算器的功能。
使用邏輯分析儀實測,HP39GS內置的s3c2410主控 I/O翻轉速率在500KHz左右,若采用單總線,或者普通四線SPI(不包含DIO模式)能達到60KB/s左右的傳輸速率,雖然速度感人,但一般的文件讀寫也足夠了。(對於39gs 131*64的屏幕來說,單色模式刷新一次需要1KB的數據,模擬SPI足以滿足要求)。
以上純屬廢話,下面開始正題。
點位圖:(左側為RXD2 TXD2,右側為RXD0 TXD0)
查閱s3c2410手冊可得該點配置信息:
引腳映射
#define CS GPH7
#define MOSI GPH2
#define MISO GPH3
#define SCLK GPH6
/WP 寫保護,HOLD暫停操作,在此都不需要用到,沒條件直接接到w25q32存儲器的VCC即可,元件充裕的可以串接一個10K歐的電阻。
CS片選接GPH7,DO接GPH3,DI接GPH2,GND接主板覆銅區域或GND焊盤,VCC與GND並聯一個104電容即可,注意,此處不能將VCC接到主板上的3V3焊盤上,會拉高配置為輸入的GPIO腳,原因未知。
電路比較簡單,就不使用Altium Designer了,按圖接線即可。
改機方案一:
在外部接口焊盤處飛線:
改機方案二:
利用上圖左下的主板與屏幕小板連接焊盤進行飛線,由於本人最早采用方案一進行測試,故無實機圖,僅提供主板與屏幕小板部分焊盤定義。
按照上面的引腳配置,對應連接即可,同樣需要注意的是,VCC與GND使用一個104電容並聯即可,VCC不要接主板3V3焊盤。
焊接完成注意測試下連接是否正常,清理下焊油即可,至此硬件部分的改造就全部完成了。
軟件部分:
先上軟件下載:hp39gs_w25q32.zip
使用說明:
使用連接軟件HP39gs Calculator Connectivity Kit進行下載,首次下載需要先傳入LIB275L.lib,HP39GS請下載FlashViewer.bin,對於hp40系列機型則下載FlashViewer.hp即可。
進入Aplet程序后,首屏顯示SPI初始化,W25Q32初始化,設備ID,64位識別碼等信息,在此界面按下“Enter”鍵將進入W25Q32內容瀏覽,
按 1 則擦除W25Q32 扇區0,擦除后全為1,即0xFF。(在此界面按左/右方向鍵同樣可進入,但上/下鍵進入由於沒有執行扇區讀取顯示為隨機內容)
主界面操作:方向鍵左/右切換頁,方向鍵上/下切換頁內容,界面一次顯示8*8 = 64bytes,左/右鍵一次讀取一頁即256bytes,故上/下鍵可進行4次翻頁才能瀏覽全部的256bytes內容。
圖例為扇區0擦除后全為1。
其他有內容的區域,根據地址得出該區域為扇區1
文件下載:
https://files.cnblogs.com/files/yanye0xff/hp39gs_w25q32.zip