LoginSignup
0
0

8051いじり

Last updated at Posted at 2023-09-11

フォトフレームで使われている8051ベースのSOCの攻略方法を考えて見ました。

オリジナルの8051は1980年くらいにIntelが出したワンチップマイコンの先駆けなのですが、この頃の8bit cpuはほとんどなくなりましたが、8051はいまもいろいろなところで使われています。

これは命令の実行クロック数を減らしたり、クロック自体を48MHzなどと当初の10倍以上の高速でも動くようにした事で現在でも通用するパフォーマンスを出しています。

おそらく設計時はアセンブラで使うことを想定していたと思いますが、cが上手く動いたのもよかったのかもしれません。

小さいフォトフレームで使われているAX203ですが、同社のチップがdpf-axというプロジェクトでファームの書き換えをしていて、その際にリバースエンジニアリングした方法のノートがあります。

dpf-axはAX206を対象にしたプロジェクトなのですがいろいろ検索していたらAX208のデーターシートが見つかりました。

まだ細かく確認していませんが、おそらくAX203もそんなに違いはないと思います。

オリジナルの8051にはCPUとTIMERとUARTとGPIOが入っていました。

8051のIOのレジスタは0x80から0xffまであります。

image.png

sdccでは以下のように定義されています。

8051.h
/*  BYTE Register  */
__sfr __at (0x80) P0   ;
__sfr __at (0x81) SP   ;
__sfr __at (0x82) DPL  ;
__sfr __at (0x83) DPH  ;
__sfr __at (0x87) PCON ;
__sfr __at (0x88) TCON ;
__sfr __at (0x89) TMOD ;
__sfr __at (0x8A) TL0  ;
__sfr __at (0x8B) TL1  ;
__sfr __at (0x8C) TH0  ;
__sfr __at (0x8D) TH1  ;
__sfr __at (0x90) P1   ;
__sfr __at (0x98) SCON ;
__sfr __at (0x99) SBUF ;
__sfr __at (0xA0) P2   ;
__sfr __at (0xA8) IE   ;
__sfr __at (0xB0) P3   ;
__sfr __at (0xB8) IP   ;
__sfr __at (0xD0) PSW  ;
__sfr __at (0xE0) ACC  ;
__sfr __at (0xF0) B    ;

AX208ではすべて変えてしまっているようです。

現在秋月で販売されているCH55xではオリジナルを残して機能追加しているようです。

AX203ではSPI Flashにコードが含まれていて、それをおらくSOC内部のROMが1KByte程度RAMに読み取って実行を移し、そのコードでプログラム本体をRAMに移して実行しているようです。

吸い出したバイナリの逆アセンブルはサイトがなくなっていますが、d52が良いようです。

シリアルのプログラムはここが参考になります。

逆アセンブラにmov sbuf,aが無ければオリジナルのuartは変更されているものと思われます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0