用jlink烧写s3c2440的uboot报错 timeout while erasing sector

img


本来nor flash下好了uboot的 开电源按空格 直接进入了led选项 然后板子成砖了

配置细节如下

img

img

img

使用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的驱动程序是否正确安装。

具体操作如下:

  1. 确认jlink与s3c2440之间的连接是否正确,包括连接线松动、连接线损坏等情况。
  2. 确认jlink的驱动程序是否正确安装,可以重新安装一下驱动程序。
  3. 检查s3c2440的nor flash是否正常,可以使用其他方法烧写uboot进行测试,如使用串口下载器下载uboot。
  4. 如果以上方法都无法解决问题,可以尝试使用其他烧写工具进行烧写,如OpenOCD等。

示例代码:

  1. 检查连接是否正常
// 检查jlink与s3c2440之间的连接是否正常
if(jlink_connected() && s3c2440_connected()) {
    printf("连接正常");
} else {
    printf("连接异常");
}
  1. 重新安装驱动程序
# 重新安装jlink驱动程序
sudo apt-get install jlink
  1. 使用其他烧写工具进行烧写
# 使用OpenOCD进行烧写
openocd -f interface/jlink.cfg -f target/s3c2440.cfg -c "flash write_image uboot.bin 0x0"