我看了te2440的bootloader源码,那个0x30800000并非在te2440的bootloader中规定的,而是当电脑的dnw向2440发送数据的时候,最先的4个字节是要下载到SDRAM的地址,接着后4个字节是要下载的数据的大小(这一步是在usb的中断中判断的,/usbout.c中的Ep3Handler())。
在option.h中看到如sdram分部:
//64MB
// 0x30000000 ~ 0x30ffffff : Download Area (16MB) Cacheable
// 0x31000000 ~ 0x33feffff : Non-Cacheable Area
// 0x33ff0000 ~ 0x33ff47ff : Heap & RW Area
// 0x33ff4800 ~ 0x33ff7fff : FIQ ~ User Stack Area
// 0x33ff8000 ~ 0x33fffeff : Not Useed Area
// 0x33ffff00 ~ 0x33ffffff : Exception & ISR Vector Table
也就是理论上bootloader规定:0x30000000 ~ 0x30ffffff都能作为在电脑上dnw里设置的下载地址。(待验证)(失败)
DNW数据的收取是通过dma收取的,用的是dma2进行的