芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密

飞芯科技提供芯片解密,芯片破解,IC解密,单片机解密,MCU解密,STM解密逆向服务

芯片解密STM32F407寄存器工程

芯片解密寄存器工程中sys.c、usart.c、delay.c使用的是正电原子的代码,但没有使用正电原子的启动文件。
在排除了以上问题后,发现usart.c里的串口不能正常初始化,printf函数也不能正常输出。
通过片上软件仿真后,发现程序跑到串口初始化后必进HardFault_Handler,然后就卡在死循环里。
通过查阅资料,大家都说需要避免使用半主机模式,但在正电原子的usart.c里有。

#pragma import(__use_no_semihosting)            
//芯片解密标准库需要的支持函数                 
struct __FILE
{
     int handle;
     /* Whatever you require here. If the only file you are using is */
     /* standard output using printf() for debugging, no file handling */
     /* is required. */
};
/* FILE is typedef’ d in stdio.h. */
FILE __stdout;      
//定义_sys_exit()以避免使用半主机模式   
void _sys_exit(int x)
{
     x = x;
}
//重定义fputc函数
int fputc(int ch, FILE *f)
{      
     while((USART1->SR&0X40)==0);//循环发送,直到发送完毕   
     USART1->DR = (u8) ch;      
     return ch;
}

后来尝试将启动文件里的Heap_Size       EQU     0x00000200改成Heap_Size       EQU     0x00000000,也没有变化
最终,尝试了一下使用正电原子的启动文件,以上问题都消失了,可以正常初始化串口、使用printf,也不用开启Use MicroLIB。
明明只改了一个多了一个使能浮点运算,不知道为什么差别这么大。

                  LDR     R0, =0xE000ED88    ; 使能浮点运算 CP10,CP11
                  LDR     R1,[R0]
                  ORR     R1,R1,#(0xF << 20)
                  STR     R1,[R0]

总结

  • 寄存器工程必须注释‘SystemInit’
  • 建议新手新建寄存器工程使用正电原子的启动文件



联系方式

地址:石家庄市新华区民族路77号华强广场D座2009
电话:0311-88816616/87087811
手机:13315190088
传真:0311-67901001
联系人:张工
网址:www.taihedz.cn
邮箱:feixindz@163.com
微信:xinpianjiemi
QQ:527263666/568069805

在线客服
热线电话

企业微信