TQ2440上U-boot下载到DRAM运行,使文件大小超过512K的方法
2011-11-10 13:12
337 查看
最近学习TQ2440,喜欢在无OS下让程序在SDRAM上跑,而TQ2440上的uboot在下载程序到SDRAM上运行居然有文件大小的限制!!通过DNW发送超过512k就会被截断!
常见的例子就是开发板测试程序代码,部分图片乱码不能正常显示,原因就是代码文件超过了512K,而图像数据往往被链接在最后。
TQ的Uboot上,usb下载这部分代码是用module封装的,看不到原代码,有点不厚道!不过也有人贴出来源代码的,我看过,几乎和天嵌的一样,不知道谁才是原创,呵呵。
好了,废话少说,切入正题!!
要突破512K文件大小的限制只需要修改Uboot源码里的/common/cmd_menu.c文件。
在uboot 1.1.6_2008版里下载程序到SDRAM的代码如下:
修改完成后重新编译U-Boot下载到开发板上就OK啦!
另外在说个小事,TQ上的U-Boot USB下载功能打包为usb.module,而且每当初始化时会打印出:
#### EmbedSky BIOS for XXXX ####
有点讨厌(我为了找到这句话是怎么输出的花了一晚上的时间)。怎么去掉呢?(有点不厚道,TQ的人肯定不喜欢下文.....)
有两种方法。
第一是下载源代码,把TQ的module去掉,换成自己的代码。下载地址:http://blog.chinaunix.net/space.php?uid=8087110&do=blog&id=1989046。此人很强大,膜拜中......
第二是修改TQ的module文件。此方法仅对U-boot 1.1.6_2009.08版和以前版本有效。用文本编辑器打开modules/usb.module文件,在文件的最后是字符串数组部分,可以找到
#### EmbedSky BIOS for XXXX ####这段代码,将他们替换成你想要的或者直接用把第一个‘#’抵换为null就OK了!嘿嘿(注意一定不能改变原字符串的长度哦!!)
后话1:我也为TQ想了对应的策略,毕竟人家开发不容易啊(假设TQ是原创....),TQ可以将以上字符串稍微加密处理就可以了,比如以上字符串每个字符都加一个常量或变量,这样就不容易被找到了,输出的时候需要变换一下在printf就好了,哈哈!
后话2:我最近看到TQ的uboot_2010.06版中usb.module中的厂商字符串已经没有了,已经移到lib_arm/board.c了,这样去除就方便多了
本人水平有限,欢迎拍砖。
常见的例子就是开发板测试程序代码,部分图片乱码不能正常显示,原因就是代码文件超过了512K,而图像数据往往被链接在最后。
TQ的Uboot上,usb下载这部分代码是用module封装的,看不到原代码,有点不厚道!不过也有人贴出来源代码的,我看过,几乎和天嵌的一样,不知道谁才是原创,呵呵。
好了,废话少说,切入正题!!
要突破512K文件大小的限制只需要修改Uboot源码里的/common/cmd_menu.c文件。
在uboot 1.1.6_2008版里下载程序到SDRAM的代码如下:
case '7': { extern volatile U32 downloadAddress; extern int download_run; download_run = 1; // strcpy(cmd_buf, "usbslave 1"); // This is old code strcpy(cmd_buf, "usbslave 1 0x30000000"); // This is new code run_command(cmd_buf, 0); download_run = 0; // sprintf(cmd_buf, "go %x", downloadAddress); // This is old code sprintf(cmd_buf, "go %x", 0x30000000); // This isnew code run_command(cmd_buf, 0); break; }
修改完成后重新编译U-Boot下载到开发板上就OK啦!
另外在说个小事,TQ上的U-Boot USB下载功能打包为usb.module,而且每当初始化时会打印出:
#### EmbedSky BIOS for XXXX ####
有点讨厌(我为了找到这句话是怎么输出的花了一晚上的时间)。怎么去掉呢?(有点不厚道,TQ的人肯定不喜欢下文.....)
有两种方法。
第一是下载源代码,把TQ的module去掉,换成自己的代码。下载地址:http://blog.chinaunix.net/space.php?uid=8087110&do=blog&id=1989046。此人很强大,膜拜中......
第二是修改TQ的module文件。此方法仅对U-boot 1.1.6_2009.08版和以前版本有效。用文本编辑器打开modules/usb.module文件,在文件的最后是字符串数组部分,可以找到
#### EmbedSky BIOS for XXXX ####这段代码,将他们替换成你想要的或者直接用把第一个‘#’抵换为null就OK了!嘿嘿(注意一定不能改变原字符串的长度哦!!)
后话1:我也为TQ想了对应的策略,毕竟人家开发不容易啊(假设TQ是原创....),TQ可以将以上字符串稍微加密处理就可以了,比如以上字符串每个字符都加一个常量或变量,这样就不容易被找到了,输出的时候需要变换一下在printf就好了,哈哈!
后话2:我最近看到TQ的uboot_2010.06版中usb.module中的厂商字符串已经没有了,已经移到lib_arm/board.c了,这样去除就方便多了
本人水平有限,欢迎拍砖。
相关文章推荐
- 迅雷下载游文件大小超过FAT16限制怎么办?
- (判断url文件大小)关于inputStream.available()方法获取下载文件的总大小
- u-boot下载模式LCD显示图片修改方法(基于TQ2440)
- python实现从网络下载文件并获得文件大小及类型的方法
- windowsXP 超过4G文件ftp只能下载3.99G的问题原因及解决方法
- ASP.NET页面上传文件时提示文件大小超过请求解决方法
- u-boot-2011.03在TQ2440上的移植(8)--支持下载yaffs2文件系统
- U-boot、Kernel、文件系统的几种下载方式总结(基于TQ2440开发板)
- 关于inputStream.available()与HttpURLConnection.getContentLength()方法获取下载文件的大小
- 关于inputStream.available()与HttpURLConnection.getContentLength()方法获取下载文件的大小
- 增加tomcat支持下载文件的大小方法
- 由于jsp include 很多文件后导致java类大小超过65535 bytes 的解决方法(转载)
- 关于获得文件超过2G,超过4G文件大小的方法
- 关于inputStream.available()方法获取下载文件的总大小
- SpringBoot生成jar文件在window及linux下运行方法
- 关于inputStream.available()方法获取下载文件的总大小
- u-boot通过nfs从服务器下载内核,并且启动内核,挂载根文件系统的方法
- u-boot不能用tftp下载文件的解决方法积累
- 关于inputStream.available()方法获取下载文件的总大小
- 返回要下载文件大小的方法