配置细节如下
使用JLink间接烧写S3C2410、S3C2440开发板Nor、Nand Flash的方法
可以借鉴下
https://blog.csdn.net/stephen_yu/article/details/6423817
是不是Nor Flash的型号选错了,你看看开发板上焊的Nor Flash芯片上的是什么名称。我之前也搞过一个2440的板子,上面flash的型号可以在 https://juejin.cn/post/7138970381485867038 找到,你参考一下,也许和你的是一样的,不过很容易查看,就在芯片表面的丝印层上。
s3c2440太古董了,即使你搞定uboot,后面编译linux也会有很多问题。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
这个错误提示语意是超时擦除扇区,这可能与以下一些原因有关:
1.连接问题:确认连接正常,连接线路没有连接松动或者短路。
2.芯片供电问题:确认芯片供电正常,电源电压和电流稳定,没有起伏。
3.芯片存储器参数设置问题:确认芯片存储器参数设置正确,擦除扇区地址和长度没有越界。
下面给出相关代码参考:
#define FLASH_TIMEOUT 100000
#define FLASH_ADDR_START 0x00000000
#define FLASH_SECTOR_NUM 10
#define FLASH_SECTOR_LENGTH 0x10000
// 擦除整个 Flash
unsigned int EraseFlash (void)
{
unsigned int base_addr = FLASH_ADDR_START;
unsigned int end_addr = FLASH_ADDR_START + FLASH_SECTOR_NUM * FLASH_SECTOR_LENGTH;
int i;
volatile unsigned short* ptr;
for (i = 0; i < FLASH_SECTOR_NUM; i++) {
// 检查该扇区是否擦除
ptr = (volatile unsigned short*)(base_addr + (FLASH_SECTOR_LENGTH - 1));
if (*ptr != 0xFFFF) {
// 发送命令擦除扇区
FlashCmd(base_addr, 0x20);
// 等待操作结束,如果超时则返回失败
if (WaitFlashReady(base_addr, FLASH_TIMEOUT) == -1) {
return -1;
}
}
// 访问下一个扇区
base_addr += FLASH_SECTOR_LENGTH;
}
return 0;
}
以上代码是一个擦除整个 Flash 的函数示例,只需将上述代码集成到你的程序中即可。
如果我的回答解决了您的问题,请采纳!
以下内容引用CHATGPT:
这个问题可能是由于jlink与s3c2440之间的通信出现了问题导致的。解决这个问题的思路是检查通信链路是否正常,检查jlink与s3c2440之间的连接是否正确,检查jlink的驱动程序是否正确安装。
具体操作如下:
示例代码:
// 检查jlink与s3c2440之间的连接是否正常
if(jlink_connected() && s3c2440_connected()) {
printf("连接正常");
} else {
printf("连接异常");
}
# 重新安装jlink驱动程序
sudo apt-get install jlink
# 使用OpenOCD进行烧写
openocd -f interface/jlink.cfg -f target/s3c2440.cfg -c "flash write_image uboot.bin 0x0"