AM335X-USB下载程序
概述
使用蚂蚁矿板BB_Black_V1.6(DDR3 256M),BB_Black_V1.5(DDR3 512M)的USB0口下载程序,USB-HS模式,自定义Bulk传输,在Windows下使用Libusb驱动传输平均速度可以达到3.2MB/S。相比TI官方原始的bootloader使用uart0(115200波特率) xmodem协议的方式,下载速度提升明显。
硬件改造
焊接mini usb口,可以使用下面这款usb座子(需要用刀把底部两个塑料凸起削掉),嘉立创可以买到。
飞线,使usb的供电进入主板SYS_5V。(下面的原理图跨了两页,详细请参考官方的BBB_SCH.pdf)
改造完毕。
下载地址:
https://files.cnblogs.com/files/yanye0xff/am3352-usbboot.zip
下载完成后,你将得到4个文件:
antminer.exe 运行在Windows平台的下载工具
boot.bin AM335X BOOTROM加载到处理器内部SRAM的二级引导程序(SPL),该文件无tiimage文件头
boot_ti.bin AM335X BOOTROM加载到处理器内部SRAM的二级引导程序(SPL),该文件添加了tiimage文件头
zadig-2.5.exe Windows下用以安装libusb驱动的程序,libusb将usb底层操作暴露到用户态程序,使usb驱动编写更为简单。
对于有TF卡的用户,按照https://www.cnblogs.com/yanye0xff/p/15037231.html
的方法制作一张可以被AM335X BOOTROM识别的启动TF卡,然后把boot_ti.bin
改名为MLO
放到TF卡内即可。
将TF卡插入蚂蚁矿板的卡槽中,然后接上mini-usb线,按下POWER按钮上电(此处Power按钮我未焊接,用的镊子短接,有条件可以焊个上去)。
如果插好TF卡后,先使用DC-5V供电,再插mini-usb线,就不需要按POWER按钮上电了,蚂蚁矿板会自动上电。
只插UBS供电情况下,用镊子短接Power上电,USB-Bootloader启动完成USER LED0会自动亮起。
如果暂时没有TF卡,也可以先给板子供电后(方法和上面一样),使用串口将SPL程序载入处理器内部SRAM,(AM335X BOOTROM支持uart0 xmodem 1k文件传输协议),这里可以使用支持xmodem协议的串口工具SecureCRT。
由于xmodem是一种非常简单的文件传输协议,因此也可以自行实现。当载入SPL程序后,将自动初始化板载USB0外设,并在uart0上输出相应信息。
安装驱动
运行zadig-2.5.exe,它会自动检测到没有驱动的USB设备,一键安装即可。
到设备管理器里看看,这样的就OK了。
软件使用
antminer.exe为命令行软件,只能在命令行里运行。
load address:程序的加载地址,16进制格式,前面不要加0x
,下载的程序会被加载到该地址,一般为DRAM首地址80000000
。
boot address:程序的启动,16进制格式,前面不要加0x
,一般和程序的加载地址相同,也可以不同,根据需求决定。
input image path/name 被下载的文件,如果和antminer.exe在同一个目录,直接输文件名.后缀名即可,否则请输入完整路径。
样例:加载rtthread.bin到DRAM首地址,程序运行记录。在下载前会打印处理器的一些信息以及SPL对DRAM的配置信息。
G:\>antminer 80000000 80000000 rtthread.bin
download address: 0x80000000
boot address: 0x80000000
download filename: rtthread.bin
download filesize: 531040 Bytes
usb bulk package: 1038
find device: vid:1cbe, pid:0003 result:0
endpoint_in:129, endpoint_out:1
hw_info.header:0x5553504c
hw_info.control_revision:0x4e8b0100
ip_rev_minor:0x0
ip_rev_custom:0x0
ip_rev_major[Major Revision]:0x1
ip_rev_rtl[RTL Version]:0x0
ip_rev_func:0xe8b
ip_rev_scheme:0x1
hw_info.control_hwinfo:0x00000000
IP Module:0x00000000
hw_info.control_status:0x00420313
sysboot0[SYSBOOT[7:0]]:0x13
devtype:0x3 [General Purpose (GP) Device]
bw:[GPMC CS0 Default Bus Width][SYSBOOT[8]]:0x0 [ 8-bit data bus]
waiten:[GPMC CS0 Default Wait Enable][SYSBOOT[9]]:0x1 [Use WAIT input]
admux:[GPMC CS0 Default Address Muxing][SYSBOOT[11:10]]:0x0 [No Addr/Data Muxing]
testmd:[SYSBOOT[13:12]]:0x0
sysboot1:[SYSBOOT[15:14]]:0x1
hw_info.control_emif_sdram_config:0x61405332
Page Size:0x2 [1024-word page (10 column bits)]
External chip select:0x0 [use pad_cs_o_n[0] only]
Internal Bank:0x3 [8 banks]
SDRAM Type:0x3 [DDR3]
DDR3 Termination resistor value:0x1 [RZQ/4]
SDRAM data bus width:0x1 [16-bit]
hw_info.dpll_pwr_sw_status:0x03030300
Power Enable status for PER DPLL:0x1 [Enabled]
Power Good status for PER DPLL:0x1 [Power GOOD]
Power Enable status for DISP DPLL:0x1 [Enabled]
Power Good status for DISP DPLL:0x1 [Power GOOD]
Power Enable status for DDR DPLL:0x1 [Enabled]
Power Good status for DDR DPLL:0x1 [Power GOOD]
hw_info.device_id:0x2b94402e
Manufacturer's JTAG ID:0x17
Device part number (unique JTAG ID):0xb944
Device revision:0x2 [Silicon Revision 2.1]
hw_info.dev_feature:0x00fc0382
dev_feature_bits:0x00fc0382
hw_info.efuse_sma:0x00013c2f
ARM MPU Maximum Frequency:0x1c2f 1 GHz ARM MPU Maximum (ZCZ Package only)
Package type of the device (PG2.x only):0x1 [ ZCZ Package]
hw_info.ddr_io_ctrl:0x00000000
mddr_sel:0x0 [IOs set for DDR2/DDR3 (STL mode)]
mddr_sel:0x0 [free running SLOW (32k) clock]
execution time : 156 ms
download finish.
G:\>
通过uart0调试串口,可以看到成功将rtthread载入DRAM运行了。
蚂蚁矿板的256M内存,也可正常显示