搜索
bottom↓
回复: 12

烧录器代码求解释

[复制链接]

出0入0汤圆

发表于 2020-11-16 16:20:30 | 显示全部楼层 |阅读模式
static const uint32_t flash_code[] = {
    0xE00ABE00, 0x062D780D, 0x24084068, 0xD3000040, 0x1E644058, 0x1C49D1FA, 0x2A001E52, 0x4770D1F2,
    0x4603B510, 0x4C442000, 0x48446020, 0x48446060, 0x46206060, 0xF01069C0, 0xD1080F04, 0x5055F245,
    0x60204C40, 0x60602006, 0x70FFF640, 0x200060A0, 0x4601BD10, 0x69004838, 0x0080F040, 0x61104A36,
    0x47702000, 0x69004834, 0x0004F040, 0x61084932, 0x69004608, 0x0040F040, 0xE0036108, 0x20AAF64A,
    0x60084930, 0x68C0482C, 0x0F01F010, 0x482AD1F6, 0xF0206900, 0x49280004, 0x20006108, 0x46014770,
    0x69004825, 0x0002F040, 0x61104A23, 0x61414610, 0xF0406900, 0x61100040, 0xF64AE003, 0x4A2120AA,
    0x481D6010, 0xF01068C0, 0xD1F60F01, 0x6900481A, 0x0002F020, 0x61104A18, 0x47702000, 0x4603B510,
    0xF0201C48, 0xE0220101, 0x69004813, 0x0001F040, 0x61204C11, 0x80188810, 0x480FBF00, 0xF01068C0,
    0xD1FA0F01, 0x6900480C, 0x0001F020, 0x61204C0A, 0x68C04620, 0x0F14F010, 0x4620D006, 0xF04068C0,
    0x60E00014, 0xBD102001, 0x1C921C9B, 0x29001E89, 0x2000D1DA, 0x0000E7F7, 0x40022000, 0x45670123,
    0xCDEF89AB, 0x40003000, 0x00000000
};

const program_target_t flash_algo = {
    0x20000021,  // Init
    0x20000053,  // UnInit
    0x20000065,  // EraseChip
    0x2000009F,  // EraseSector
    0x200000DD,  // ProgramPage

    // BKPT : start of blob + 1
    // RSB  : address to access global/static data
    // RSP  : stack pointer
    {
        0x20000001,
        0x20000C00,
        0x20001000
    },

    0x20000400,  // mem buffer location
    0x20000000,  // location to write prog_blob in target RAM
    sizeof(flash_code),  // prog_blob size
    flash_code,  // address of prog_blob
    0x00000400,  // ram_to_flash_bytes_to_be_written
};


flash_code[]里面的这些数组是怎么得来的,也不太像是地址。我在另一份代码里面看到过代码生成这串数字,但是还不太懂。如果我要手动去写,该怎么找呢
for(cnt=0;cnt<Flash_Algo_Length;cnt++)
        {
                f_lseek(&file,60+cnt*4);//设置读取文件数据起始位置
                memset(Read_Buff,0x00,4);
                f_read(&file,Read_Buff,4,&fnum);//读取数据Flash算法
                flash_code[cnt]=        (
                                                                                                        Read_Buff[0]<<24        |        Read_Buff[1]<<16        |
                                                                                                        Read_Buff[2]<<8        |        Read_Buff[3]                );
        }



flash_algo 这个结构体里面的数据是手册里面看到的吗?是烧录目标芯片的flash参数数据吗。

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入213汤圆

发表于 2020-11-16 21:40:51 来自手机 | 显示全部楼层
这就防止接手的看懂故意这么写的。先将这段子程序指定地址进行编译,然后拷贝出对应地址处的机器码。

出0入0汤圆

发表于 2020-11-16 23:21:23 | 显示全部楼层
flash_code[]是一个固件,运行于目标芯片的RAM. 烧录器先通过SWD把flash_code[]写入到目标芯片的0x20000000(即RAM起点), 然后使用flash_algo 中的指针调用相应的擦除,烧写等函数。
flash_code[]的固件,你也可以自己写,示例在keil/amm/flash.
flash_algo 中的数据是是读取.FLM文件软件生成的,XIVN1987的帖子说的很详细。

出15入178汤圆

发表于 2020-11-16 23:32:34 | 显示全部楼层
jyrpxj 发表于 2020-11-16 21:40
这就防止接手的看懂故意这么写的。先将这段子程序指定地址进行编译,然后拷贝出对应地址处的机器码。 ...

不一定是保密,Freescale系列的8位机就是提供的类似烧录算法

出675入8汤圆

发表于 2020-11-17 08:21:58 来自手机 | 显示全部楼层
有意思,学习一下

出0入0汤圆

 楼主| 发表于 2020-11-17 08:50:34 | 显示全部楼层
tiny13 发表于 2020-11-16 23:21
flash_code[]是一个固件,运行于目标芯片的RAM. 烧录器先通过SWD把flash_code[]写入到目标芯片的0x20000000 ...

好的,谢谢,我去看看先

出0入0汤圆

发表于 2020-11-17 13:57:59 | 显示全部楼层
谢谢,学习一下

出0入0汤圆

发表于 2020-11-17 16:19:12 | 显示全部楼层
CORTEX-M的汇编代码  

出0入0汤圆

发表于 2021-7-23 14:27:05 | 显示全部楼层
中间那三个是怎么来的,知道了吗,就是中间堆栈指针那三个

出0入42汤圆

发表于 2021-7-23 14:44:10 | 显示全部楼层
以前jtag就是用这个技术的吧

出0入0汤圆

 楼主| 发表于 2021-7-23 16:36:30 | 显示全部楼层
songguoliang 发表于 2021-7-23 14:27
中间那三个是怎么来的,知道了吗,就是中间堆栈指针那三个

好像是看手册找到的地址偏移

出0入0汤圆

发表于 2021-8-23 09:47:14 | 显示全部楼层
爱晴海玩偶 发表于 2021-7-23 16:36
好像是看手册找到的地址偏移

看的哪个手册啊

出0入0汤圆

 楼主| 发表于 2021-8-23 15:12:51 | 显示全部楼层

你这个型号的芯片手册啊。寄存器那不是都有offset吗
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-25 12:59

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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