原创:http://blog.sina.com.cn/u/2312748742

一、DM36X 的UBL编译
第一步:
1、先下载dvsdk_dm368-evm_4_02_00_06_setuplinux(DVSDK)
和arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2(交叉编译工具链)
2、先解压 tar -xjvf arm-2009q1-203-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz2,
3、安装后要设环境变量。export PATH=$PATH:/work/kylin....
4、解压DVSDK并安装。
第二步:
DM36x下有CCS、Common,GNU三个文件夹:
CCS文件夹:
这里边的程序需要在TI CCS下编译,通过仿真器和JTAG在DM36X的板子上调试和烧写NAND FLASH或NOR FLASH,有烧写Writer的应用程序,用CCS打开工程文件,会连接到dvsdk_dm368_4_02_00_06\psp\flash-utils\Common\ drivers里。
Common文件夹:Common里有核心的文件device.c和device_nand.c。device.c是最重要的文件,这里初始化很多系统的东西,见DEVICE_init():
1、屏蔽所有中断;
2、清除中断标志;
3、DEVICE_PSCInit(),Power and Sleep Controller;
4、主芯片管脚复用的设置DEVICE_pinmuxControl(),DM36X的管脚复用很多,很复杂,一共5个PINMUX寄存器需配置;
5、DEVICE_PLL1Init(),PPL1配置,见SPRUSG5A.pdf的35页开始的介绍,使用不同的频率的DM36X,这些值都不同,不过TI已经提供参数参考,我们的DM365核心板是:ARM297_DDR243_OSC24,DM368核心板是:ARM432_DDR340_OSC24;
6、DEVICE_PLL2Init(),PPL2的配置,使用同上,不同频率的值不同;
7、DEVICE_DDR2Init()的配置,市场上不同的DDR2内存芯片需要不同的参数配置,就在这个函数内。
8、DEVICE_EMIFInit(),这个针对NAND FLASH接口或NOR FLASH接口的访问时序配置;
9、DEVICE_UART0Init()的配置,这个就是我们调试DM36X串口的设置,我们使用UART0来调试LINUX,这里配置不好,后面的开发不用调试了。
10、DEVICE_TIMER0Init()定时器TIMER0的设置;
11、DEVICE_I2C0Init()的设置;
GNU的文件夹:
这个就是在LINUX环境下编译UBL的环境,修改dvsdk_dm368_4_02_00_06\psp\flash-utils\DM36x\GNU\ubl下的makefile,把
#$(MAKE) -C build TYPE=nor注释掉,只保留$(MAKE) -C build TYPE=nand,然后是make clean和 make生产ubl_DM36x_nand.bin的文件;
如果出现:device.c:(.text+0x2ec): undefined reference to `__aeabi_uidiv'和device.c:(.text+0x2e8): undefined reference to `__aeabi_uidivmod'的BUG,就是DDR_Get_Val()函数里边的除法和求余的语句和你的编译器不配置造成的。
result = ((parm * freq) / 10000) - 1;和if(((parm * freq) % 10000)),我们对参数的求值直接:
    tRFC = xxx; //DDR_Get_Val(DDR_T_RFC, DDR_FREQ);
    tRP = xxx; //DDR_Get_Val(DDR_T_RP, DDR_FREQ);
    tRCD = xxx; //DDR_Get_Val(DDR_T_RCD, DDR_FREQ);
    tWR = xxx; //DDR_Get_Val(DDR_T_WR, DDR_FREQ);
    tRAS = xxx; //DDR_Get_Val(DDR_T_RAS, DDR_FREQ);
    tRC = xxx; //DDR_Get_Val(DDR_T_RC, DDR_FREQ);
    tRRD = xxx; //DDR_Get_Val(DDR_T_RRD, DDR_FREQ);
    tWTR = xxx; //DDR_Get_Val(DDR_T_WTR, DDR_FREQ);
解决方法不要用DDR_Get_Val函数了。改成如下
 #define BOOL(x) (x==0?0:1)
#define DDR_Get_Val(x, y) ((((x * y) / 10000) - 1) + BOOL((x * y) % 10000))
注意:DM368的UBL一般不需要移植的,已经烧写到ROM中了只要哦好UBOOT及kernel的移植就可以了
参考http://blog.csdn.net/olei_oleitao/article/details/7919307;在此感谢他的无私奉献!

编译DM36X的UBL,相关推荐

  1. DAVINCI DM36x开发攻略——U-BOOT-2010.12及UBL移植

    从盛夏走到深秋,我们继续DAVINCI DM365-DM368的开发.说来惭愧,人家51CTO热情支持本博客,而本人却一直没有像其他博客之星一样频繁更新博客,心里确实说不过去.管理公司确实很累,有更急 ...

  2. DM36X UBL UBoot

    一.DM36X的BOOT过程介绍 DM36x的BOOT过程和DM6446.DM6467完全是一样的,因为都是ARM926EJS架构,里边都有一个RBL,这RBL在芯片出厂的时候都烧写在ROM里,芯片上 ...

  3. DAVINCI DM365-DM368开发攻略—U-boot-2010.12-rc2-psp03.01.01.39及UBL的移植 .

    转载:http://blog.csdn.net/olei_oleitao/article/details/7919307 一.DM36X的BOOT过程介绍 DM36x的BOOT过程和DM6446.DM ...

  4. DM368 UBL和u-boot的裁剪 .

    一.DM36X的BOOT过程介绍 DM36x的BOOT过程和DM6446.DM6467完全是一样的,因为都是ARM926EJS架构,里边都有一个RBL,这RBL在芯片出厂的时候都烧写在ROM里,芯片上 ...

  5. DAVINCI DM365-DM368开发攻略—U-boot-2010.12-rc2-psp03.01.01.39及UBL的移植

    从盛夏走到深秋,我们继续DAVINCI DM365-DM368的开发.说来惭愧,人家51CTO热情支持本博客,而本人却一直没有像其他博客之星一样频繁更新博客,心里确实说不过去.管理公司确实很累,有更急 ...

  6. DAVINCI DM365-DM368开发攻略——U-BOOT-2010.12及UBL的移植

    转载注明出处:http://zjbintsystem.blog.51cto.com/964211/713240 从盛夏走到深秋,我们继续DAVINCI DM365-DM368的开发.说来惭愧,人家51 ...

  7. DM368nbsp;ubl和uboot的裁剪

    转载:http://blog.csdn.net/olei_oleitao/article/details/7919307 一.DM36X的BOOT过程介绍 DM36x的BOOT过程和DM6446.DM ...

  8. DM368 UBL和u-boot的裁剪

    转载:http://blog.csdn.net/olei_oleitao/article/details/7919307 一.DM36X的BOOT过程介绍 DM36x的BOOT过程和DM6446.DM ...

  9. SD card boot and flashing tool for TI davinic DM368

    实验环境: DM368 平台 : LW3xx SD card : Micro SD 128MB HOST : ubuntu 10.04.4 64-bit CROSS_COMPILE : CodeSou ...

最新文章

  1. eclipse中用maven多模块管理,然后主项目无法调用其他被依赖项目里的方法,解决办法
  2. bootstarp js设置列隐藏_bootstrap table getHiddenColumns获取隐藏的列的方法
  3. 如何查看文件的字符集
  4. JVM学习-类文件结构
  5. Jmeter使用时部分配置记录
  6. c++读取文本文件(txt)代码
  7. 批量复制或提取CAD中的说明文字为表格
  8. 超简单的scrapy实现ip动态代理与更换ip
  9. 电脑微软商店消失解决办法
  10. 遥感或DEM像素深度如何降为8bit
  11. 016 Rust死灵书之安全方式内存初始化
  12. 2006-09-28 墨子的双眼皮
  13. js圆周运动动画_JavaScript动画实例:沿圆周运动的圆圈
  14. 数据分析学习技能树 | 养成数据分析师的品质和思维模式
  15. xss payload大全
  16. 如何看待简书大V饱醉豚 写的《为什么程序员是出轨率最高的群体》?
  17. 前端面试必读,助力秋招!
  18. S5P4418:RTC芯片HYM8563驱动移植
  19. html5 为什么,为什么我们都该关注HTML5
  20. java app 图标_App 更换应用图标

热门文章

  1. 采用DUPLICATE 把asm数据库复制到文件系统
  2. 中国石油计算机专业的前景分析,寻找就业优势 解决就业困境——以中国石油大学计算机专业为例.pdf...
  3. SpringBoot +Redis+FastJson反序列化失败
  4. linux串口号固定
  5. 第七届国赛--路径之谜(java)
  6. 有道云markdown数学公式语法大全
  7. 比特安详细解析Fantasm Finance事件:注重细节,才能历久弥新
  8. web开发不可错过的经典代码20段
  9. 前端与后端,顶象设备指纹的两种接入方式
  10. Android UI设计——ViewPager中设置底部显示圆点焦点(二)