S5PV210 WinCE6.0 镜像烧写流程分析

一、 USB烧写NK.BIN流程:

OEMPlatformInit->CheckUSBDownload()->USBDownload()->ecvPacket()->processPacket()->WriteRawImageToBootMedia()->TOC_Write()
->EBOOT_COMMAND_NOTIFY_STARTDOWNLOADING()->OEMPreDownload ()->DownloadImag()->DownloadSignedBin()->OEMReadData()->WriteImageToFlash()->OEMWriteFlash()->WriteFlashNK()->TOC_Write()

二、烧写(升级)镜像流程:

eboot目录下main.c中:OEMPlatformInit-> download.c中:CheckUSBDownload-> USBInit-> InitOTG-> if(USBIsCableAttached)-> USBDownload
   USBDownload-> if(IsUSBRequest()==TRUE)-> recvPacket-> processPacket

在processPacket中有很多的处理USB传输过来每帧(0x800=2K)的命令字。每帧前16个字节分别是:
BytesToDWORD(pRxBuffer, &cmd);
BytesToDWORD(pRxBuffer+4, &address);
BytesToDWORD(pRxBuffer+8, &length);
BytesToDWORD(pRxBuffer+12, &rxChecksum);
且校验和为2K-16个字节后面字节的累加和。函数为:download.c中的CheckSum。

大致流程是:eboot目录下的USB.C中的OTGDEV_RdPktBulkOutEp()函数里的接收到ATUD->后发送OKUD。然后上位机发送2K字节的每一帧数据。每一帧数据的前16个字节为协议信息。
USB-Monitor下来的前2帧的命令分别是:EBOOT_COMMAND_NOTIFY_STARTDOWNLOADING(07)输出LOG提示信息,然后是:EBOOT_COMMAND_GETVERSION(13)获取EBOOT版本号,第三帧就开始传输NK.BIN.
dragin和210通讯详细流程:

0.进入 USBDownload()
1.上位机发送ATUD四个字节->210回送OKUD四个字节
2.上位机发送Eboot version请求(cmd=EBOOT_COMMAND_GETVERSION)->210回送0x31313030
3.上位机发送cmd=EBOOT_COMMAND_NOTIFY_STARTDOWNLOADING和address=0 ->210回送CheckSum
4.上位机发送cmd=EBOOT_COMMAND_WRITETOMEM(2k帧为 cmd+address+length+checksum+nk.bin)->210回送CheckSum
5.上位机发送cmd=EBOOT_COMMAND_FLASH_BOOTLOADER(dwDLType == 0)->210回送CheckSum
6.上位机发送cmd=EBOOT_COMMAND_OPENSTL->210回送CheckSum
7.上位机发送cmd=EBOOT_COMMAND_NOTIFY_STARTDOWNLOADING 和address=1 ->210回送CheckSum
8.上位机发送cmd=EBOOT_COMMAND_WRITETOMEM(2k帧为 cmd+address+length+checksum+nk.bin)->210回送CheckSum
9.上位机发送cmd=EBOOT_COMMAND_FLASH_BOOTLOADER(dwDLType == 1跟第5步执行不同的操作)->210回送CheckSum
10.退出 USBDownload()
注:以上是下载bootloader和nk.bin流程  如果只想下载nk.bin只需要1 2 6 7 8 9其中2也可以省略掉

 

三、附dragin烧写工具信息记录:

---------------------------------------------------------------------------------------
Notify Connecting USB(Type : USB SERIAL)
---------------------------------------------------------------------------------------
USB requests to connect is received
Attempting to open \\?\usb#vid_0547&pid_2720#5&2bf451f8&0&2#{25dbce51-6c8f-4a72-8a6d-b54c2b4fc835}
To open \\?\usb#vid_0547&pid_2720#5&2bf451f8&0&2#{25dbce51-6c8f-4a72-8a6d-b54c2b4fc835} is success
The end of ENUM
USB device name : 5&2bf451f8&0&2
USBSeral COM port : 0
A device requested to connect
---------------------------------------------------------------------------------------
BOOT VERSION = 11.00
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
Notify Downloading(Type : BOOT, Downloads : 267)
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
Flash image(Type : BOOT, Blocks : 3)
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
Notify Downloading(Type : OS, Downloads : 48896995)
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
Flash Image(Type : OS, Blocks : 187)
---------------------------------------------------------------------------------------
Real Blocks : 1
---------------------------------------------------------------------------------------
Launch image(Launch Address : 0x80028000)
-----------------------------------------------
---------------------------------------------------------------------------------------
Notify Connecting USB(Type : USB SERIAL)
---------------------------------------------------------------------------------------
USB requests to connect is received
Attempting to open \\?\usb#vid_0547&pid_2720#5&2bf451f8&0&2#{25dbce51-6c8f-4a72-8a6d-b54c2b4fc835}
To open \\?\usb#vid_0547&pid_2720#5&2bf451f8&0&2#{25dbce51-6c8f-4a72-8a6d-b54c2b4fc835} is success
The end of ENUM
USB device name : 5&2bf451f8&0&2
USBSeral COM port : 0
A device requested to connect
---------------------------------------------------------------------------------------
BOOT VERSION = 11.00
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
Notify Downloading(Type : BOOT, Downloads : 267)
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
Flash image(Type : BOOT, Blocks : 3)
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
Notify Downloading(Type : OS, Downloads : 48883007)
---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------
Flash Image(Type : OS, Blocks : 187)
---------------------------------------------------------------------------------------
Real Blocks : 1
---------------------------------------------------------------------------------------
Launch image(Launch Address : 0x80028000)
---------------------------------------------------------------------------------------

转载自:http://blog.csdn.net/zhengmeifu/article/details/7320602

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于在 Ubuntu 上进行 S5PV210 烧写,你可以按照以下步骤进行操作: 1. 首先,确保你的 Ubuntu 系统已经安装了必要的工具和驱动程序。你可能需要安装 adb 和 fastboot 工具,以及 S5PV210 的 USB 驱动程序。 2. 将 S5PV210 设备连接到你的电脑上,通过 USB 连接线将其连接到计算机的 USB 端口。 3. 打开终端,在终端中输入以下命令来确认设备是否被正确识别: ``` adb devices ``` 如果设备正确连接并被识别,你将看到设备的序列号。 4. 下载你要烧写的固件文件,并将其放入一个易于访问的位置。 5. 在终端中输入以下命令来进入设备的引导模式: ``` adb reboot bootloader ``` 这将重启设备并进入引导模式。 6. 在终端中输入以下命令来确认设备是否处于引导模式: ``` fastboot devices ``` 如果设备正确连接并处于引导模式,你将看到设备的序列号。 7. 现在,使用以下命令来烧写固件文件: ``` fastboot flash <partition> <firmware_file> ``` 将 `<partition>` 替换为固件文件所属的分区名称,将 `<firmware_file>` 替换为固件文件的路径和文件名。 8. 等待烧写过程完成,然后输入以下命令来重新启动设备: ``` fastboot reboot ``` 设备将重新启动,并开始运行新的固件。 请注意,以上步骤仅适用于使用 S5PV210 芯片的设备,并且可能因设备型号和操作系统版本的不同而略有差异。在进行任何烧写操作之前,请确保你已经备份了重要的数据,并谨慎操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值