硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1012|回复: 10
收起左侧

[问题解答] 自己尝试增加对武汉芯源 CW32L010增加离线烧录支持遇到问题

[复制链接]

1

主题

11

回帖

14

积分

新手上路

积分
14
发表于 2024-9-26 12:04:08 | 显示全部楼层 |阅读模式
本帖最后由 Huyil 于 2024-9-26 12:07 编辑

测试时发现这款芯片需要先使用读 IDCODE 后执行读UID才有反应,
于是在lib的InitUnderReset()中 增加了ReadDeviceID(),
发现读取到的和软件上按钮读取的不一致

读UID

读UID

软件:
core_id = 0x0BC11477
UID Address = 0x001007B0, Length = 10
uid1 = 3B 00 C8 00 0E 48 74 10 0C 80


lib打印为乱码


根据已有的CW32L031 配置文件 改写成L010的配置文件

尝试烧录提示

InitUnderReset() none
0:/H7-TOOL/Programmer/Device/WHXY/Lib/CW32L010_Lib.lua:48: bad argument #2 to 'format' (number expected, got nil)
InitUnderReset() none
0:/H7-TOOL/Programmer/Device/WHXY/Lib/CW32L010_Lib.lua:48: bad argument #2 to 'format' (number expected, got nil)
.NVIC_CPUID = 410CC601, Cortex-M0+ r0p1
error:02 target_flash_init(FLM_FNC_ERASE)

FlashCW32L010_TEST_FLM.zip

5.64 KB, 下载次数: 0

回复

使用道具 举报

1

主题

11

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2024-9-26 12:05:28 | 显示全部楼层
本帖最后由 Huyil 于 2024-9-26 12:08 编辑

[Lua] 纯文本查看 复制代码
-------------------------------------------------------
-- 文件名 : CW32L031_64.lua
-- 版  本 : V1.0  2022-08-01
-- 说  明 :
-------------------------------------------------------

print("load \"CW32L010_64.lua\" ok")

IncludeList = {
        "0:/H7-TOOL/Programmer/Device/WHXY/Lib/CW32L010_Lib.lua"
}

function config_cpu(void)
        CHIP_TYPE = "SWD"                --指定器件接口类型: "SWD", "SWIM", "SPI", "I2C", "UART"

        AlgoFile_FLASH = "0:/H7-TOOL/Programmer/Device/WHXY/CW32L010/FLM/FlashCW32L010_TEST.FLM"
        AlgoFile_EEPROM = ""
        AlgoFile_OTP   = ""
        AlgoFile_OPT   = ""
        AlgoFile_QSPI  = ""

        FLASH_ADDRESS = 0x00000000                --CPU内部FLASH起始地址
        --FLASH_SIZE = 64 * 1024                        --覆盖FLM中的 Device Size

        --EEPROM_ADDRESS = 0                        --CPU内部EEPROM起始地址
        --EEPROM_SIZE = 0

        OTP_ADDRESS        = 0x00100760                --CPU内部OTP(1次可编程)起始地址
        OTP_SIZE        = 0x16

        RAM_ADDRESS = 0x20000000                --CPU内部RAM起始地址

        --Flash算法文件加载内存地址和大小
        AlgoRamAddr = RAM_ADDRESS
        AlgoRamSize = 4 * 1024                --手册上写有8KRAM, 但是mdk默认配置为4K,mdk中改为8K烧录也失败

        MCU_ID = 0x0BC11477

        UID_NONE = 0                                --0表示有UID 1表示无UID (CWD2F003的UID通过lib中的MCU_ReadUID() 实现
        UID_ADDR = 0x001007B0                   --UID地址,不同的CPU不同
        UID_BYTES = 10

        ERASE_CHIP_TIME = 3000                --全片擦除时间ms(STM32F207解除读保护会执行全面擦除,等待时间大概15秒)

        OB_FILE_USED        = -1                -- -- -- --1表示使用文件方式烧录,0表示用字符串方式烧录,-1表示不支持OB区烧录
        OB_FILE_ADDRESS = 0x08000000
        OB_FILE_SIZE = 128
        OB_FILE_SECURE_OFF = ""
        OB_FILE_SECURE_ON  = ""       
       
        --地址组中的FFFFFFFF表示原始数据中插入一个取反的字节
        OB_ADDRESS     = "08000000 08000001 08000002 08000003 08000004 08000005 08000006 08000007 08000008 08000009 0800000A 0800000B"

        OB_SECURE_OFF  = "FF FF FF FF FF FF FF FF"        --SECURE_ENABLE = 0时,编程完毕后写入该值
        OB_SECURE_ON   = "00 FF FF FF FF FF FF FF"        --SECURE_ENABLE = 1时,编程完毕后写入该值

        --判断读保护和写保护的条件(WRP = Write protection)
        OB_WRP_ADDRESS   = {08000004}         --内存地址
        OB_WRP_MASK           = {0x01}                --读出数据与此数相与
        OB_WRP_VALUE          = {0x01}                --相与后与此数比较,相等表示没有保护

        FLM_BUFFER_ADDR = 0x20000290
        SB_FLASH_ADDR = 0
        --FLM_STATIC_BASE = 0x20000490
        --FLM_INIT_CLK = 48*1000000
end

--用于PC软件, 设置缺省配置参数
function pc_default(void)
        TVCC_VOLT = 3.3                        --定义CPU供电电压TVCC
       
        VERIFY_MODE = 1                        --校验模式: 0:自动(FLM提供校验函数或读回) 1:读回  2:软件CRC32  3:STM32硬件CRC32

        REMOVE_RDP_POWEROFF = 1 --写完OB后需要断电
        POWEROFF_TIME1 = 0           --写完OB延迟时间ms
        POWEROFF_TIME2 = 100           --断电时间ms
        POWEROFF_TIME3 = 20           --上电后等待时间ms

        SWD_CLOCK_DELAY_0 = 0         --单路烧录时的时钟延迟
        SWD_CLOCK_DELAY_1 = 0         --多路烧录时的时钟延迟
       
        AUTO_REMOVE_PROTECT = -1 --自动解除读保护

        NOTE_PC = ""
       
        --供PC软件选择算法的列表
        AlgoFile_List = {
                "AlgoFile_FLASH", 0x00000000, 64 * 1024,
        }                       
end

---------------------------结束-----------------------------------
回复

使用道具 举报

1

主题

11

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2024-9-26 12:06:10 | 显示全部楼层
单路模式
开始烧录...
单路烧录
WHXY(武汉芯源)        CW32L010        CW32L010F8
SWCLK时钟延迟:         0
TVCC电压: 3.267V   TVCC电流:3mA
复位模式 = 0
出错立即中止 = 1
core_id = 0x0BC11477
uid1 = 3B 00 C8 00 0E 48 74 10 0C 80
------------------------
FLM : 0:/H7-TOOL/Programmer/Device/WHXY/CW32L010/FLM/FlashCW32L010_TEST.FLM
Data: DR203.hex_1.bin
Addr: 0x00000000, cfg = 1
FLM memory Infomation :
  algo file : 0:/H7-TOOL/Programmer/Device/WHXY/CW32L010/FLM/FlashCW32L010_TEST.FLM
  AlgoRamAddr = 0x20000000
  AlgoRamSize = 0x1000
  ----Device Info------------------------
  Version & Architecture : 0x0101
  Device Name : CW32L010
  Device Type : 1
  Device Addr : 0x00000000
  Device Size : 64KB (0x10000)
  Page Size   : 512B
  Reserved    : 0x00000000
  Erased Content : 0xFF
  Program Page TimeOut   : 100
  Erase Sector TimeOut   : 3000
  Erase Sector Size      : 00000000, 0KB (0x200)
  ----Algo function offset ---------------
  Load Offset : 0x00000034
  Load Size   : 0x00000258
  FlashDevice : 0x0000028C
  Init        : 0x00000009
  UnInit      : 0x0000007F
  BlankCheck  : 0x00000000
  EraseChip   : 0x00000147
  EraseSector : 0x000000E9
  ProgramPage : 0x00000195
  Verify      : 0x000001FB
  CaculCRC32  : 0x00000000
  GetSN       : 0x00000000
  ----Algo RAM Info---------------------------
  algo ram address   : 0x20000000
  algo size          : 0x00000290
  buffer address     : 0x20000290
  buffer size        : 0x00000200
  breakpoint addres  : 0x20000001
  static base adress : 0x20000490
  stack pointer      : 0x20001000
  Init        : 0x20000041
  UnInit      : 0x200000B7
  BlankCheck  : 0x00000000
  EraseChip   : 0x2000017F
  EraseSector : 0x20000121
  ProgramPage : 0x200001CD
  Verify      : 0x20000233
InitUnderReset() none
..Device Name = ; ?Ht
回复

使用道具 举报

1

主题

11

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2024-9-26 12:06:33 | 显示全部楼层
lib:

-------------------------------------------------------
-- 文件名 : CW32L031_Lib.lua
-- 版  本 : V1.0  2022-08-01
-- 说  明 :  
-------------------------------------------------------

--【F1】复位期间执行的函数. 目的:debug期间冻结看门狗时钟,低功耗模式启动HCLK和FCLK
function InitUnderReset(void)
  -- local str = "error"

        print("InitUnderReset() none")
       
        ReadDeviceID() --  F460 不适用
        return "OK"
        -- if (pg_write32(0xE000EDF0, 0xA05F0001) == 0) then
                -- goto quit_err
        -- end
       
        -- if (pg_write32(0xE0042004, 0x00000307) == 0) then
                -- goto quit_err
        -- end

        -- if (ReadDeviceID() ~= 0) then
                -- goto quit_err
        -- end

-- ::quit_ok::
        -- str = "OK"

-- ::quit_err::
        -- print(str)

--        return str
end

--读芯片ID
function ReadDeviceID(void)
        local str
        local err = 0
        local j
        local ch_num = 10
       
        g_DevID = {pg_read_mem(0x001007B0, 10)} --全局变量g_DevID[]

        str = "..Device Name = "
        for j = 1, ch_num, 1 do
                str = str..string.format("%s ", g_DevID[j + 1])
        end

        print(str)
        return err
end

---------------------------结束-----------------------------------
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115988
QQ
发表于 2024-9-26 12:33:12 | 显示全部楼层
这个是执行擦除失败了,得我们这边调试添加了。

楼主方便的话,可以发裸片或者测试板子给我们(如果是测试板子,添加完毕后会返还),我们免费添加。

回复

使用道具 举报

1

主题

11

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2024-9-26 13:44:35 | 显示全部楼层
可以的, 请问收货地址

CW32L010_DataSheet_CN_V1.0.pdf

2.98 MB, 下载次数: 2

CW32L010_UserManual_CN_V1.0.pdf

14.27 MB, 下载次数: 1

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115988
QQ
发表于 2024-9-26 14:06:35 | 显示全部楼层
Huyil 发表于 2024-9-26 13:44
可以的, 请问收货地址

MDK的PACK包需要提供下, 他们官方好像还没有提供下载。

收获地址:孟东华,86-13638617262,湖北省 武汉市 武昌区 水果湖街街道 中北路世纪彩城E区世纪大厦15楼1501
发货的时候带个纸条注明:TOOL实现CW32L010的脱机烧录,另外留下您的QQ,旺旺或者微信联系方式,方便我们工作人员联系你(务必留个联系方式)。

回复

使用道具 举报

1

主题

11

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2024-9-26 14:55:44 | 显示全部楼层
pack, 应该还是bate版本

cw32l010stdlib-master.zip

1.51 MB, 下载次数: 1

回复

使用道具 举报

1

主题

11

回帖

14

积分

新手上路

积分
14
 楼主| 发表于 2024-9-26 14:58:04 | 显示全部楼层
Huyil 发表于 2024-9-26 13:44
可以的, 请问收货地址

配置读写保护需要进入BootLoader
https://www.whxy.com/uploads/fil ... withISP_CN_V1.2.pdf
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115988
QQ
发表于 2024-9-26 17:15:53 | 显示全部楼层
Huyil 发表于 2024-9-26 14:55
pack, 应该还是bate版本

好的,我搜了下,这个是刚发布的芯片。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115988
QQ
发表于 2024-9-30 01:10:03 | 显示全部楼层
已经添加支持

2024-09-28 脱机烧录新增芯片CW32L010系列
https://www.armbbs.cn/forum.php? ... 5926&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-6-1 13:30 , Processed in 0.293249 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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