ghent360 / RTD-2660-Programmer

Realtek RTD2660/2662 programmer
BSD 3-Clause "New" or "Revised" License
98 stars 40 forks source link

RTD2668 support #2

Closed arekm closed 8 years ago

arekm commented 8 years ago

Please consider adding RTD2668 support (for example for boards from ebay known as: PCB800116 or VS-TY2668-V1).

Not sure if that's feasible though. RTD2668 seems to be using UART interface for programming.

ghent360 commented 8 years ago

There is very little info for that chip, sorry.

arekm commented 8 years ago

Indeed it's hard to find anything about the subject. So far found this:

http://cache.baiducontent.com/c?m=9d78d513d98307f94fece47e0912dd711925d1396b868954388b870fd33a541b0120a1ac26510d199692203e46b8492bbaa36d24701420c0ca95d75799e0c56d328276307a1ed145428748a99f1272c725915beda54ab7bfa62593d98895800a&p=9d7bc64ad4db11a05bec976d61598d&newp=8c79c54ad5c242f918a6d42d0214cb231611d73f6590cf512496fe4bc5241001&user=baidu&fm=sc&query=rtd2668+checksum&qid=9e5fa09600065858&p1=1

For future reference:

HK168 Flash ISP升级(20131211)_计算机硬件及网络_IT/计算机_专业资料
暂无评价|0人阅读|0次下载|举报文档

HK168 Flash ISP升级(20131211)_计算机硬件及网络_IT/计算机_专业资料。Shenzhen HaoKe Electronics Co., Ltd. RTD2668 Flash ISP --MCU 部门 1. 目的: 目前公司有多个项目采用了 RTD2668 用来驱动 TFT
Shenzhen HaoKe Electronics Co., Ltd. RTD2668 Flash ISP --MCU 部门 1. 目的: 目前公司有多个项目采用了 RTD2668 用来驱动 TFT 屏. 为了满足日后整机系统更新软 件的需求, RTD2668 也列入了被更新的范围. RTD2668 属于一颗比较老的 IC, 所以原厂在这方面提供的文档存在不详细,不全面的现 状. 在 ISP 应用到实际项目之前, 验证工作就显得极其重要. 为了方便日后使用, 验证后的 结果及 ISP 流程形成文档是本文的主要内容 2. ISP 模式: 基于安全考虑(Flash 在实际应用中出现过掉程序的问题)将采用 ISP 方式. ISP 编程主机: ARM ISP 编程对象: RTD2668 3. 物理层: 通信采用 UART, ?波特率: 115200; ?数据位: 8Bit ?停止位: 1Bit ?校验位: 无 控制信号: ?Reset: 用于控制 RTD2668 系统复位, 或进入 ISP 模式 ?WP: 硬件写保护控制(评估是否需要添加, 如果改 IAP 模式, 那需要此信号,建 议预留) RTD2668 UART RX TX RESET WP ARM UART TX RX GPIO GPIO 第 1 页 共 9 页 Shenzhen HaoKe Electronics Co., Ltd. 4. 协议层: 4.1) Connecting: 为了使 RTD2668 进入 ISP 模式, 需先对其复位, 然后发送 0x11(建议 15ms 发送一次) 4.2) Connected: RTD2668 在复位后每接收到一个 0x11 都会返回一个 0x79 做为应答 为了保险起见, ISP 编程主机在接到一个应答后, 需冗余操作 1~2 次 4.3) ISP 协议内容: 具体内容见<<2668_burn_flow.pdf>> 参考 ISP 寄存器操作<<RTD2668_FLASH.pdf>> 参考<<ISP Download For Serial Flash>>(经作为辅助, 了解其对 ISP 寄存器操作). 4.4) 流程总结: 1) 做进入 ISP 前的相关工作 CMD_SQ 0, CMD_SQ 1, CMD_SQ 2, 2) 将 2668 ROM code 搬到内部 IMEM 4K 上: CMD_SQ 3, 3) 擦除 Bank 里面的 Sector(0 ~ 15) ? 擦除 CMD_SQ 4, CMD_SQ 6, 4) 写 Bank 里面的数据 CMD_SQ 5, or CMD_SQ 7 5) 重复 3)直到数据全部写完 注: CMD_SQ 见下面 4.5) 第 2 页 共 9 页 Shenzhen HaoKe Electronics Co., Ltd. 4.5) 使用逻辑分析仪监听数据包, 比对比协议进行分析: Connected 后: 200ms 后发送数据: CMD_SQ 0: 此操作目的未知, 可固定写此序列, 注意状态的判断. TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x68, 0x68 RX: 0xF1 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x63, 0x50 RX: 0xC2 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, 0x01 RX: 0x91 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0x89 RX: 0x18 TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0x88, 0x92 ;使能写寄存器 OP CODE ;WRSR OP code ; ;读取状态 ;判断状态为 bit0, 如果为 0,完成操 作, 如果为 1,继续等待. 读取再判断 CMD_SQ 1: 此操作目的未知, 可固定写此序列, 注意状态的判断. TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, 0x01 RX: 0x91 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x67, 0x00 RX: 0x96 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0x69 RX: 0xF8 TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0x68, 0x92 ;WRSR OP code ;使能此次操作(bit0 置 1) ;判断状态为 bit0, 如果为 0,完成操 作, 如果为 1,继续等待. 读取再判断 0x68?查询得到的状态 0x92?查询命令的 checksum. CMD_SQ 2: 此操作目的未知, 可固定写此序列, 是否跟 CMD_SQ3 有关?. TX: 0x26, 0x38, 0x0E, 0x00, 0x2C, 0xCC, 0x02 RX: 0xEC TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0xED, 0x84 RX: 0x98 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0xEE, 0x04 RX: 0x1B 第 3 页 共 9 页 Shenzhen HaoKe Electronics Co., Ltd. TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x6B, 0x3B RX: 0xA1 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x6C, 0x80 RX: 0x1D CMD_SQ 3: 此操作序列,是让 RTD2668, ISP code 在 IMEM 上跑. TX: 0x26, 0x38, 0x0E, 0x00, 0x2C, 0x01, 0x00 RX: 0x23 TX: 0x26, 0x38, 0x0E, 0x00, 0x2C, 0x00, 0x00 RX: 0x22 TX: 0x26, 0x38, 0x0E, 0x00, 0x2C, 0x08, 0x02 RX: 0x28 TX: 0x26, 0x38, 0x0E, 0x00, 0x2C, 0x02, 0x01 RX: 0x21 CMD_SQ 4: 此操作序列, 擦除.Bank0, 地址 0x0000 TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x00, 0x00, 0x00 RX: 0x97 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0xB8 RX: 0x29 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, 0xDB//Block Erase 命 令 (64K 地 址 范 围 xx0000h~xxFFFFh, “x:0~F”) RX: 0x48 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0xB9 RX: 0x28 TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60, RX: 0xB8, 0x92 第 4 页 共 9 页 Shenzhen HaoKe Electronics Co., Ltd. CMD_SQ 5: 此操作序列, 写数据. TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0x68 RX: 0xF9 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, 0x01 RX: 0x91 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x64, 0x00 RX: 0x95 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0x69 RX: 0xF8 TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60, RX: 0x68, 0x92 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x6D, 0x02 RX: 0x9E 注: 以上命令均已在 PC 上验证, 都能得到正常的 ACK (checksum) 开始写数据: TX: 0x26, 0x38, 0x15, 0x00, 0x00, 0x00 TX: XXXXXXXXX; 此块数据长度约为 22.169ms. RX: 0xC6 经计算大约为 256Bytes TX: 0x26, 0x38, 0x15, 0x00, 0x01,0x00 TX: XXXXXXXXX; 此块数据长度约为 22.160ms. RX: 0x83 … … TX: 0x26, 0x38, 0x15, 0xe2, 0x00, 0x00 TX: XXXXXXXXX; 此块数据长度约为 22.160ms. RX: 0x66 经计算大约为 256Bytes 经计算大约为 256Bytes CMD_SQ 6: 此操作序列, 擦除 Bank 1, 地址 0x010000. 第 5 页 共 9 页 Shenzhen HaoKe Electronics Co., Ltd. TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x00, 0x00 RX: 0x96 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0xB8 RX: 0x29 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, 0xD8 //Sector Erase(4K 地 址 范 围 xxx000H~xxxFFFh) RX: 0x48 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0xB9 RX: 0x28 TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92 TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x10, 0x00 RX: 0x86, TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B8 RX: 0x29 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, D8 // Block Erase RX: 0x48 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B9 RX: 0x28 TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92 TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x20, 0x00 RX: 0xB6 TX: 0x26, 0x38, 0x0E, 0x00, 0x60, B8 RX: 0x29 TX: 0x26, 0x38, 0x0E, 0x00, 0x61, D8 RX: 0x48 TX: 0x26, 0x38, 0x0E, 0x00, 0x60, B9 RX: 0x28 TX: 0x26, 0x38, 0x0D, 0x00, 0x60 RX: 0xB8, 0x92 TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x30, 0x00 RX: 0xA6 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B8 RX: 0x29 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, D8 RX: 0x48 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B9 RX: 0x28 第 6 页 共 9 页 Shenzhen HaoKe Electronics Co., Ltd. TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92 TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x40, 0x00 RX: 0xD6 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B8 RX: 0x29 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, D8 RX: 0x48 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B9 RX: 0x28 TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92 TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x50, 0x00 RX: 0xC6 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B8 RX: 0x29 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, D8 RX: 0x48 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B9 RX: 0x28 TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92 TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x60, 0x00 RX: 0xF6 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B8 RX: 0x29 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, D8 RX: 0x48 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B9 RX: 0x28 TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92 … … TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0xE0, 0x00 RX: 0x76 第 7 页 共 9 页 Shenzhen HaoKe Electronics Co., Ltd. TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B8 RX: 0x29 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, D8 RX: 0x48 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B9 RX: 0x28 TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92 CMD_SQ 7: 此操作序列, 写数据. TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0x68 RX: 0xF9 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, 0x01 RX: 0x91 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x64, 0x00 RX: 0x95 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0x69 RX: 0xF8 TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0x68, 0x92 TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x6D, 0x02 RX: 0x9E 开始写数据: TX: 0x26, 0x38, 0x15, 0x00, 0x00, 0x01 TX: XXXXXXXXX; 此块数据长度约为 22.160ms. RX: 0xD4 TX: 0x26, 0x38, 0x15, 0x01, 0x00, 0x01 第 8 页 共 9 页 经计算大约为 256Bytes Shenzhen HaoKe Electronics Co., Ltd. TX: XXXXXXXXX; RX: 0x6F … … 此块数据长度约为 22.160ms. 经计算大约为 256Bytes 第 9 页 共 9 页 

RTD2668 board (PCB800116 known also as VS-TY2668-V1) seems to indeed have UART on 12 (TX) and 15 (RX) pins of VGA port, 115200n81 for parameters. Example session from power up and few key presses on the remote below.

Sending 0x11 to serial causes device to stop transmitting data (switches to ISP mode as chinese text says I guess) and reboots after a few seconds (I assume reboots because I'm not sending anything).

drv_pcb_Init ...
drv_uart_Init ...
drv_timer_Init ...
drv_irrc_Init ...
drv_irrc_Init:2880 = 0x52190a3b
drv_irrc_Init:28882 = 0xffff021b
Sparrow Booting ...

Version:12
Date:20100915
Clock:1437
Username:d

Library Version:12
Library Date:20100915
Library Clock:1437
Library Username:d

It had created  message queues for state!*****
fw_timer_event_Init complete
fw_timer2_event_Init complete
fw_timer_hdmi_10ms_Init complete
fw_monitor_Init ...
BANK = 0x7 , CTStorageRing.RingStart 0xc000 CTStorageRing.RingEnd 0xf000
StorageLastUpdate 0xceb2...
IndexLastUpdate 0xc01c...
OldestRingPtr 0xc000...
NewestRingPtr 0xc000...
flow_storage_Init ...

tim mode=1
Power On ...
drv_pwm_Init ...
drv_i2c_Init ...
Initialize I2c
drv_lsadc_Init ...

DCLKSS_0x2f08 = 0x97b0005
panel parameter --------------0x3816400
Initial Display is completed.
flow_audio_Setmute enable is 0x1
Initial modestate is completed.
Get Input source 0x6 from storage
CONFIG_VBI_CC_SUPPORT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
UI osd initial complete ...
drvif_Hdmi_Init
use default hdmi edid
use default vga edid
EnableAudioClock
AioInit_Step1
Init Audio Interrupt
AppInit
[AUDIO][APP] set comp_volume ch=0x3f,vol=-576,id=0
[AUDIO][APP] set ts_scomp_volume ch=0x3f,vol=0,id=0
Init Equalizer Coef.
Init Bass Coef.
Init Treble Coef.
AtvInit

RemapVolumeTable[0]= -576 ,RemapVolumeTable[6]= 383

i=0,111RemapVolumeTable[i+1] = -316

i=1,111RemapVolumeTable[i+1] = -116

i=2,111RemapVolumeTable[i+1] = -36

i=3,111RemapVolumeTable[i+1] = 3

i=4,111RemapVolumeTable[i+1] = 48

i = 0,VolumeOsdTable[i] = 0

i = 1,VolumeOsdTable[i] = 1

i = 2,VolumeOsdTable[i] = 25

i = 3,VolumeOsdTable[i] = 50

i = 4,VolumeOsdTable[i] = 75
[AUDIO][APP] set comp_volume ch=0x3,vol=-36,id=0

Initial Key Scan handler is completed
Power On Init success...

key cancel powersavning
Accept Init Src event msg
flow_audio_Setmute enable is 0x1

Initial State: src:0x6
AUDIO_TYPE_SPDIF = 0x1
[SOURCE] info->input_src == 0x6
[SOURCE] HDMI
drvif_Hdmi_InitSrc
InProcHDMI_Init
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change

key cancel powersavning
COSDCOREEXITOSDN
key cancel powersavning
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x200
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x200
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
COSDCOREEXITOSDNenter no singanl--------------------------
224MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
▒▒▒▒▒drv_pcb_Init ...
drv_uart_Init ...
drv_timer_Init ...
drv_irrc_Init ...
drv_irrc_Init:2880 = 0x52190a3b
drv_irrc_Init:28882 = 0xffff021b
Sparrow Booting ...

Version:12
Date:20100915
Clock:1437
Username:d

Library Version:12
Library Date:20100915
Library Clock:1437
Library Username:d

It had created  message queues for state!*****
fw_timer_event_Init complete
fw_timer2_event_Init complete
fw_timer_hdmi_10ms_Init complete
fw_monitor_Init ...
BANK = 0x7 , CTStorageRing.RingStart 0xc000 CTStorageRing.RingEnd 0xf000
StorageLastUpdate 0xce8d...
IndexLastUpdate 0xc01f...
OldestRingPtr 0xc000...
NewestRingPtr 0xc000...
flow_storage_Init ...

tim mode=1
Power On ...
drv_pwm_Init ...
drv_i2c_Init ...
Initialize I2c
drv_lsadc_Init ...

DCLKSS_0x2f08 = 0x97b0005
panel parameter --------------0x3816400
Initial Display is completed.
flow_audio_Setmute enable is 0x1
Initial modestate is completed.
Get Input source 0x6 from storage
CONFIG_VBI_CC_SUPPORT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
UI osd initial complete ...
drvif_Hdmi_Init
use default hdmi edid
use default vga edid
EnableAudioClock
AioInit_Step1
Init Audio Interrupt
AppInit
[AUDIO][APP] set comp_volume ch=0x3f,vol=-576,id=0
[AUDIO][APP] set ts_scomp_volume ch=0x3f,vol=0,id=0
Init Equalizer Coef.
Init Bass Coef.
Init Treble Coef.
AtvInit

RemapVolumeTable[0]= -576 ,RemapVolumeTable[6]= 383

i=0,111RemapVolumeTable[i+1] = -316

i=1,111RemapVolumeTable[i+1] = -116

i=2,111RemapVolumeTable[i+1] = -36

i=3,111RemapVolumeTable[i+1] = 3

i=4,111RemapVolumeTable[i+1] = 48

i = 0,VolumeOsdTable[i] = 0

i = 1,VolumeOsdTable[i] = 1

i = 2,VolumeOsdTable[i] = 25

i = 3,VolumeOsdTable[i] = 50

i = 4,VolumeOsdTable[i] = 75
[AUDIO][APP] set comp_volume ch=0x3,vol=-36,id=0

Initial Key Scan handler is completed
Power On Init success...

key cancel powersavning
Accept Init Src event msg
flow_audio_Setmute enable is 0x1

Initial State: src:0x6
AUDIO_TYPE_SPDIF = 0x1
[SOURCE] info->input_src == 0x6
[SOURCE] HDMI
drvif_Hdmi_InitSrc
InProcHDMI_Init
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change

key cancel powersavning
COSDCOREEXITOSDN
key cancel powersavning
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e4
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e4
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e4
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e4
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e4
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e4
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
COSDCOREEXITOSDNenter no singanl--------------------------
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e4
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e4
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e4
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e4
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
After KeyPad read keystate=0x2

key cancel powersavning
COSDCOREEXITOSDN
key cancel powersavning

Draw menu itemTimeout0 value0=0x7530, rel0=0x1
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
After KeyPad read keystate=0x2

key cancel powersavning

end fui_msg=3
enter the sub menu ---------------------------------------------
draw the     uc  Sub  menu

end fui_msg=268
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
After KeyPad read keystate=0x2

key cancel powersavning

end fui_msg=3
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
After KeyPad read keystate=0x2

key cancel powersavning

end fui_msg=3
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
After KeyPad read keystate=0x2

key cancel powersavning

end fui_msg=3
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
After KeyPad read keystate=0x2

key cancel powersavning

end fui_msg=3
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
After KeyPad read keystate=0x2

key cancel powersavning

end fui_msg=3
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
After KeyPad read keystate=0x2

key cancel powersavning

end fui_msg=3
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
After KeyPad read keystate=0x2

key cancel powersavning

end fui_msg=3

end fui_msg=268
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e6
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e6
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
After KeyPad read keystate=0x6

key cancel powersavning

end fui_msg=22

end fui_msg=268
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x2e5
cd = 0x0
Enable2X = 0x0
pixel_clk = 0x2e5
MAIN_FSM_HDMI_MEASURE
isr_info.b = 0x0
b change
After KeyPad read keystate=0x6

key cancel powersavning

end fui_msg=22
MAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
After KeyPad read keystate=0x6

key cancel powersavning

end fui_msg=22
COSDCOREEXITOSDNMAIN_FSM_HDMI_SETUP_VEDIO_PLL
b = 0x0
cd = 0x0
Enable2X = 0x0
After KeyPad read keystate=0x6

key cancel powersavning
COSDCOREEXITOSDNflow_audio_Setmute enable is 0x1
Accept Init Src event msg
flow_audio_Setmute enable is 0x1
drvif_Hdmi_Release

Initial State: src:0x1
[SOURCE] info->input_src == 0x1
[SOURCE] AV/SV/SCART
video reset done
[PathSelect] 0x0
CAVSVInitial done!!
424778940z commented 7 years ago

RTD2668 is using UART instead of I2C for programming.

I have a cmd list but not in english

ghent360 commented 7 years ago

send the commands I'll see what I can dig up.

On Mon, Mar 13, 2017 at 7:16 PM, 424778940z notifications@github.com wrote:

RTD2668 is using UART instead of I2C for programming.

I have a cmd list but not in english

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/ghent360/RTD-2660-Programmer/issues/2#issuecomment-286301592, or mute the thread https://github.com/notifications/unsubscribe-auth/AHxY1tFM1N_veMzWPu5oEcOMl149ZR1Hks5rlfiWgaJpZM4HK-Rz .

424778940z commented 7 years ago

HK168 Flash ISP升级(20131211) RTD2668 Flash ISP --MCU部门

  1. 目的: 目前公司有多个项目采用了RTD2668用来驱动TFT屏. 为了满足日后整机系统更新软件的需求, RTD2668也列入了被更新的范围. RTD2668属于一颗比较老的IC, 所以原厂在这方面提供的文档存在不详细,不全面的现状. 在ISP应用到实际项目之前, 验证工作就显得极其重要. 为了方便日后使用, 验证后的结果及ISP流程形成文档是本文的主要内容

  2. ISP 模式: 基于安全考虑(Flash在实际应用中出现过掉程序的问题)将采用ISP方式. ISP编程主机: ARM ISP编程对象: RTD2668

  3. 物理层: 通信采用UART, ?波特率: 115200; ?数据位: 8Bit ?停止位: 1Bit ?校验位: 无 控制信号: ?Reset: 用于控制RTD2668系统复位, 或进入ISP模式 ?WP: 硬件写保护控制(评估是否需要添加, 如果改IAP模式, 那需要此信号,建议预留)

  4. 协议层: 4.1) Connecting: 为了使RTD2668进入ISP模式, 需先对其复位, 然后发送0x11(建议15ms发送一次) 4.2) Connected: RTD2668在复位后每接收到一个0x11都会返回一个0x79做为应答 为了保险起见, ISP编程主机在接到一个应答后, 需冗余操作1~2次 4.3) ISP协议内容: 具体内容见> 参考ISP寄存器操作> 参考>(经作为辅助, 了解其对ISP 寄存器操作).

4.4) 流程总结: 1) 做进入ISP前的相关工作 CMD_SQ 0, CMD_SQ 1, CMD_SQ 2, 2) 将2668 ROM code 搬到内部IMEM 4K上: CMD_SQ 3, 3) 擦除 Bank里面的Sector(0 ~ 15) ? 擦除 CMD_SQ 4, CMD_SQ 6, 4) 写Bank里面的数据 CMD_SQ 5, or CMD_SQ 7 5) 重复 3)直到数据全部写完 注: CMD_SQ 见下面 4.5) 4.5) 使用逻辑分析仪监听数据包, 比对比协议进行分析: Connected后: 200ms 后发送数据:

CMD_SQ 0: 此操作目的未知, 可固定写此序列, 注意状态的判断.

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x68, 0x68 RX: 0xF1

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x63, 0x50 ;使能写寄存器OP CODE RX: 0xC2

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, 0x01 ;WRSR OP code RX: 0x91

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0x89 ; RX: 0x18

TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 ;读取状态 RX: 0x88, 0x92 ;判断状态为bit0, 如果为0,完成操 作, 如果为1,继续等待. 读取再判断

CMD_SQ 1: 此操作目的未知, 可固定写此序列, 注意状态的判断.

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, 0x01 ;WRSR OP code RX: 0x91

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x67, 0x00 RX: 0x96

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0x69 ;使能此次操作(bit0置1) RX: 0xF8

TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0x68, 0x92 ;判断状态为bit0, 如果为0,完成操 作, 如果为1,继续等待. 读取再判断 0x68?查询得到的状态

0x92?查询命令的checksum.

CMD_SQ 2:

此操作目的未知, 可固定写此序列, 是否跟CMD_SQ3有关?.

TX: 0x26, 0x38, 0x0E, 0x00, 0x2C, 0xCC, 0x02 RX: 0xEC

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0xED, 0x84 RX: 0x98

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0xEE, 0x04 RX: 0x1B

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x6B, 0x3B RX: 0xA1

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x6C, 0x80 RX: 0x1D

CMD_SQ 3:

此操作序列,是让RTD2668, ISP code 在IMEM上跑.

TX: 0x26, 0x38, 0x0E, 0x00, 0x2C, 0x01, 0x00 RX: 0x23

TX: 0x26, 0x38, 0x0E, 0x00, 0x2C, 0x00, 0x00 RX: 0x22

TX: 0x26, 0x38, 0x0E, 0x00, 0x2C, 0x08, 0x02 RX: 0x28

TX: 0x26, 0x38, 0x0E, 0x00, 0x2C, 0x02, 0x01 RX: 0x21

CMD_SQ 4:

此操作序列, 擦除.Bank0, 地址0x0000

TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x00, 0x00, 0x00 RX: 0x97

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0xB8 RX: 0x29

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, 0xDB//Block Erase命令(64K 地址范围xx0000h~xxFFFFh, “x:0~F”) RX: 0x48

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0xB9 RX: 0x28

TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60, RX: 0xB8, 0x92

CMD_SQ 5:

此操作序列, 写数据.

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0x68 RX: 0xF9

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, 0x01 RX: 0x91

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x64, 0x00 RX: 0x95

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0x69 RX: 0xF8

TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60, RX: 0x68, 0x92

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x6D, 0x02 RX: 0x9E

注: 以上命令均已在PC上验证, 都能得到正常的 ACK (checksum)

开始写数据:

TX: 0x26, 0x38, 0x15, 0x00, 0x00, 0x00

TX: XXXXXXXXX; 此块数据长度约为22.169ms. 经计算大约为256Bytes RX: 0xC6

TX: 0x26, 0x38, 0x15, 0x00, 0x01,0x00

TX: XXXXXXXXX; 此块数据长度约为22.160ms. 经计算大约为256Bytes RX: 0x83 … … TX: 0x26, 0x38, 0x15, 0xe2, 0x00, 0x00

TX: XXXXXXXXX; 此块数据长度约为22.160ms. 经计算大约为256Bytes RX: 0x66

CMD_SQ 6:

此操作序列, 擦除Bank 1, 地址0x010000.

TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x00, 0x00 RX: 0x96

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0xB8 RX: 0x29

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, 0xD8 //Sector Erase(4K 地址范围 xxx000H~xxxFFFh) RX: 0x48

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0xB9 RX: 0x28

TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92

TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x10, 0x00 RX: 0x86,

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B8 RX: 0x29

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, D8 // Block Erase RX: 0x48

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B9 RX: 0x28

TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92

TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x20, 0x00 RX: 0xB6

TX: 0x26, 0x38, 0x0E, 0x00, 0x60, B8 RX: 0x29

TX: 0x26, 0x38, 0x0E, 0x00, 0x61, D8 RX: 0x48

TX: 0x26, 0x38, 0x0E, 0x00, 0x60, B9 RX: 0x28

TX: 0x26, 0x38, 0x0D, 0x00, 0x60 RX: 0xB8, 0x92

TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x30, 0x00 RX: 0xA6

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B8 RX: 0x29

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, D8 RX: 0x48

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B9 RX: 0x28

TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92

TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x40, 0x00 RX: 0xD6

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B8 RX: 0x29

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, D8 RX: 0x48

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B9 RX: 0x28

TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92

TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x50, 0x00 RX: 0xC6

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B8 RX: 0x29

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, D8 RX: 0x48

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B9 RX: 0x28

TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92

TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0x60, 0x00 RX: 0xF6

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B8 RX: 0x29

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, D8 RX: 0x48

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B9 RX: 0x28

TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92 … …

TX: 0x26, 0x38, 0x0E, 0x02, 0xff, 0x64, 0x01, 0xE0, 0x00 RX: 0x76

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B8 RX: 0x29

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, D8 RX: 0x48

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, B9 RX: 0x28

TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0xB8, 0x92

CMD_SQ 7:

此操作序列, 写数据.

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0x68 RX: 0xF9

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x61, 0x01 RX: 0x91

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x64, 0x00 RX: 0x95

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x60, 0x69 RX: 0xF8

TX: 0x26, 0x38, 0x0D, 0x00, 0xff, 0x60 RX: 0x68, 0x92

TX: 0x26, 0x38, 0x0E, 0x00, 0xff, 0x6D, 0x02 RX: 0x9E

开始写数据:

TX: 0x26, 0x38, 0x15, 0x00, 0x00, 0x01

TX: XXXXXXXXX; 此块数据长度约为22.160ms. RX: 0xD4

TX: 0x26, 0x38, 0x15, 0x01, 0x00, 0x01

经计算大约为256Bytes

TX: XXXXXXXXX; RX: 0x6F … … 此块数据长度约为22.160ms. 经计算大约为256Bytes

danyaPostfactum commented 7 years ago

How to flash via RTD2668? By the way, has anybody a full datasheet?