迪文科技论坛

 找回密码
 立即注册
搜索
查看: 230|回复: 7

【提问】DMG12720C050_03WTC 内部 NOR FLASH 无法读写

[复制链接]

1

主题

21

回帖

610

积分

高级会员

Rank: 4

积分
610
发表于 2024-2-18 13:47:01 | 显示全部楼层 |阅读模式
DMG12720C050_03WTC <--> HDL662K <--> PC DGUSII_Tool
Read & Write VP: 正常
0x08: NOR_FLASH_RW_CMD 出错: (D7: 操作模式 0x5A=读 0xA5=写, CPU 操作完清零) -- 一直是 0x5A or  0xA5
已经出货数百, 最近个别发现问题, 测试(通过UART4输出执行信息)发现DWIN OS 代码无法正确执行, 详细原因在于 NOR_FLASH_RW_CMD出错
--曾经在 T5LCFG.CFG 中 0x06 位置写入0x28:  .5: 置1 启动一次 SPI NAND Flash 格式化(数据将清空)
                                                                  .3: 置1 擦除所有片外Flash 内容。
  来删除迪文出厂画面, 但DMG12720C050_03WTC并没有SPI NAND Flash, 这样会有什么影响?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

2

主题

665

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10043
发表于 2024-2-18 21:20:40 | 显示全部楼层
您好,0x08指令发送或者执行前,需要先判断操作标记
回复

使用道具 举报

1

主题

21

回帖

610

积分

高级会员

Rank: 4

积分
610
 楼主| 发表于 2024-2-19 08:43:22 | 显示全部楼层
0x08指令发送前 先读取0x08一次, 为0再发送0x08指令,
然后再次读取0x08, 等待它变为0;
然而在测试的4块屏上一直为0x5A or 0xA5

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

1

主题

21

回帖

610

积分

高级会员

Rank: 4

积分
610
 楼主| 发表于 2024-2-19 10:25:25 | 显示全部楼层
是否与 T5LCFG.CFG 0x06 有关:
T5L_DGUS2应用指南_V35: T5LCFG.CFG 0x06: .3-.0: 保留, 写0
T5L_DGUS2应用指南_V60: T5LCFG.CFG 0x06: .3:     置1 擦除所有片外Flash 内容
                                                                   .2:     AD 返回值分辨率选择,0=12bit 1=16bit
                                                                   .1:     OS CPU 用户8051 程序下载加密设置,0=未加密 1=加密
                                                                   .0:     SD 下载时OS 核运行选择,0= 不运行 1=运行
另外: 不同(版本)的T5LCFG.CFG与什么相关: T5L_OS_Vxx or T5L_UI_DGUS2_Vxx?
回复

使用道具 举报

2

主题

665

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10043
发表于 2024-2-19 10:51:12 | 显示全部楼层
bayi255 发表于 2024-2-19 10:25
是否与 T5LCFG.CFG 0x06 有关:
T5L_DGUS2应用指南_V35: T5LCFG.CFG 0x06: .3-.0: 保留, 写0
T5L_DGUS2应用 ...

您好,数据库函数替换成这个试试

【51库函数】CPU初始化、读写存储器、读写Flash 20190722
http://inforum.dwin.com.cn:20080 ... 28&fromuid=9946
(出处: 迪文科技论坛)


// 读写T5L片内256KW Flash,mod=0x5A 为读取,mod=0xA5为写入
// addr=DGUS变量地址,必须是偶数;addr_flash=flash读取地址,必须是偶数;len=读取字长度,必须是偶数。
void T5L_Flash(unsigned char mod, unsigned int addr, long addr_flash, unsigned int len)
{
        ADR_H = 0x00;
        ADR_M = 0x00;
        ADR_L = 0x04;
        ADR_INC = 0x01;
        RAMMODE = 0x8F; // 启动读Flash
        while (APP_ACK == 0)
                ;
        DATA3 = mod;
        DATA2 = (unsigned char)(addr_flash >> 16);
        DATA1 = (unsigned char)(addr_flash >> 8);
        DATA0 = (unsigned char)(addr_flash & 0xFE);
        APP_EN = 1;
        DATA3 = (unsigned char)(addr >> 8);
        DATA2 = (unsigned char)(addr & 0xFE);
        DATA1 = (unsigned char)(len >> 8);
        DATA0 = (unsigned char)(len & 0xFE);
        APP_EN = 1;
        RAMMODE = 0x00;
        wait_ok(0x0004);
} // 等待数据读取OK
回复

使用道具 举报

1

主题

21

回帖

610

积分

高级会员

Rank: 4

积分
610
 楼主| 发表于 2024-2-19 11:31:51 | 显示全部楼层
原来的代码是DWIN OS(没有使用DWIN OS 程序库), 不是C51.
代码是将 T5L1 内部 NOR FLASH:0x00:0000-0x03:FFFE 写入 0x00
每次写入0x4000, 共16次 -- 通过UART4输出监测执行到哪里

0x08 写入 A500 0000 8000 4000 -- 第一次成功,0x08  由    0xA5 --> 0x00
               A500 4000 8000 4000 -- 第二次失败,0x08  一直 0xA5 不变
               A500 8000 8000 4000
               A500 C000 8000 4000
               A501 0000 8000 4000
               A501 4000 8000 4000
               A501 8000 8000 4000
               A501 C000 8000 4000
               A502 0000 8000 4000
               A502 4000 8000 4000
               A502 8000 8000 4000
               A502 C000 8000 4000
               A503 0000 8000 4000
               A503 4000 8000 4000
               A503 8000 8000 4000
               A503 C000 8000 4000

然后 用 一个 极简单的DWIN OS程序(不读写内部 NOR FLASH) 替换 原程序
DMG12720C050_03WTC <--> HDL662K <--> PC DGUSII_Tool 手动 读写内部 NOR FLASH
则一次也不成功
回复

使用道具 举报

2

主题

665

回帖

1万

积分

论坛元老

Rank: 8Rank: 8

积分
10043
发表于 2024-2-19 15:54:44 | 显示全部楼层
bayi255 发表于 2024-2-19 11:31
原来的代码是DWIN OS(没有使用DWIN OS 程序库), 不是C51.
代码是将 T5L1 内部 NOR FLASH:0x00:0000-0x03: ...

您好,麻烦看下私信
回复

使用道具 举报

1

主题

21

回帖

610

积分

高级会员

Rank: 4

积分
610
 楼主| 发表于 2024-2-20 10:36:18 | 显示全部楼层
本帖最后由 bayi255 于 2024-2-20 10:40 编辑

问题找到原因了:
1. 翻出早期做试验的一块屏, T5L_UI_DGUS2_V33, T5L_OS_DGUS2_V10_82指令无应答
   0x08: NOR_FLASH_RW_CMD 读写正常
2. T5LCFG.CFG 中 0x06 位置写入0x28, SD卡下载,
   0x08: NOR_FLASH_RW_CMD 读写正常
3. 升级到 T5L_UI_DGUS2_V34_20200620
   0x08: NOR_FLASH_RW_CMD 读写正常
4. 升级到 T5L_UI_DGUS2_V36_20201127
   0x08: NOR_FLASH_RW_CMD 读写出错 -- 0x08  一直为0x5A or 0xA5
5. 升级到 T5L_UI_DGUS2_V40_20201029
   0x08: NOR_FLASH_RW_CMD 读写出错 -- 0x08  一直为0x5A or 0xA5
6. 升级到 T5L_UI_DGUS2_V41_50mSDGUS周期_20210713
   0x08: NOR_FLASH_RW_CMD 读写出错 -- 0x08  一直为0x5A or 0xA5
7. 回退到 T5L_UI_DGUS2_V34_20200620
   0x08: NOR_FLASH_RW_CMD 读写正常


现在需要使用 新控件、新功能,需要高版本的T5L_UI_DGUS2 或 T5L_OS_DGUS2,
仍需要0x08: NOR_FLASH_RW_CMD 读写, 如何解决?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|迪文科技论坛 ( 京ICP备05033781号-1 )

GMT+8, 2024-4-28 23:26 , Processed in 0.104156 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表