当前位置: 首页 > news >正文

专门做兼职的网站教做3d的网站

专门做兼职的网站,教做3d的网站,wordpress销售页面,深圳建网站价格今天我给大家分享一下如何移植一个纯净的uboot到jz2440开发大版#xff0c;通过记录学习分享#xff0c;与大家一起进步#xff01;#xff01;#xff01; 1.首先我们在uboot官网下载u-boot-2012.04.01.tar.bz2#xff0c;建立source insight工程。将下载好的uboot通过…今天我给大家分享一下如何移植一个纯净的uboot到jz2440开发大版通过记录学习分享与大家一起进步 1.首先我们在uboot官网下载u-boot-2012.04.01.tar.bz2建立source insight工程。将下载好的uboot通过FTP服务器传送到虚拟机中的linux系统下。 解压uboot tar xjf u-boot-2012.04.01.tar.bz2 cd u-boot-2012.04.01 make smdk2410_config make 将得到的u-boot.bin文件下载到开发板下载方式不唯一连接至串口发现没有输出。所以我们下载的uboot不支持我们的jz2440开发板我们接下来应该通过修改uboot源码使它支持我们的开发板。 2.分析u-boot: 得知大概的启动过程如下 -初始化硬件关看门狗、设置时钟、设置SDRAM、初始化NAND FLASH -如果bootloader较大要把它重定位到SDRAM -把内核从NAND FLASH 读到 SDRAM -设置“设置要传给内核的参数” -跳转要执行的内核 3.修改U-BOOT代码 3.1 建一个单板 cd board/samsung/ cp smdk2410 smdk2440 -rf cd ../../include/configs/ cp smdk2410.h smdk2440.h 修改boards.cfg: 仿照 smdk2410 arm arm920t - samsung s3c24x0 添加 smdk2440 arm arm920t - samsung s3c24x0 重新编译烧写看结果串口还是没有输出. 阅读代码发现不足UBOOT里先以60MHZ的时钟计算参数来设置内存控制器但是MPLL还未设置 处理措施把MPLL的设置放到start.S里取消board_early_init_f里对MPLL的设置 操作如下 在uboot中的start.s中170行有代码如下 /* FCLK:HCLK:PCLK 1:2:4 *//* default FCLK is 120 MHz ! */ldr r0, CLKDIVNmov r1, #3str r1, [r0] 这是设置时钟的我们将这一部分删掉然后换成如下代码 /* 2. 设置时钟 */ldr r0, 0x4c000014// mov r1, #0x03; // FCLK:HCLK:PCLK1:2:4, HDIVN1,PDIVN1mov r1, #0x05; // FCLK:HCLK:PCLK1:4:8str r1, [r0]/* 如果HDIVN非0CPU的总线模式应该从“fast bus mode”变为“asynchronous bus mode” */mrc p15, 0, r1, c1, c0, 0 /* 读出控制寄存器 */ orr r1, r1, #0xc0000000 /* 设置为“asynchronous bus mode” */mcr p15, 0, r1, c1, c0, 0 /* 写入控制寄存器 */#define S3C2440_MPLL_400MHZ ((0x5c12)|(0x014)|(0x01))/* MPLLCON S3C2440_MPLL_200MHZ */ldr r0, 0x4c000004ldr r1, S3C2440_MPLL_400MHZstr r1, [r0]/* 启动ICACHE */mrc p15, 0, r0, c1, c0, 0 read control regorr r0, r0, #(112)mcr p15, 0, r0, c1, c0, 0 write it back在lowlevel_init.S中最后有如下代码 SMRDATA:.word (0(B1_BWSCON4)(B2_BWSCON8)(B3_BWSCON12)(B4_BWSCON16)(B5_BWSCON20)(B6_BWSCON24)(B7_BWSCON28)).word ((B0_Tacs13)(B0_Tcos11)(B0_Tacc8)(B0_Tcoh6)(B0_Tah4)(B0_Tacp2)(B0_PMC)).word ((B1_Tacs13)(B1_Tcos11)(B1_Tacc8)(B1_Tcoh6)(B1_Tah4)(B1_Tacp2)(B1_PMC)).word ((B2_Tacs13)(B2_Tcos11)(B2_Tacc8)(B2_Tcoh6)(B2_Tah4)(B2_Tacp2)(B2_PMC)).word ((B3_Tacs13)(B3_Tcos11)(B3_Tacc8)(B3_Tcoh6)(B3_Tah4)(B3_Tacp2)(B3_PMC)).word ((B4_Tacs13)(B4_Tcos11)(B4_Tacc8)(B4_Tcoh6)(B4_Tah4)(B4_Tacp2)(B4_PMC)).word ((B5_Tacs13)(B5_Tcos11)(B5_Tacc8)(B5_Tcoh6)(B5_Tah4)(B5_Tacp2)(B5_PMC)).word ((B6_MT15)(B6_Trcd2)(B6_SCAN)).word ((B7_MT15)(B7_Trcd2)(B7_SCAN)).word ((REFEN23)(TREFMD22)(Trp20)(Trc18)(Tchr16)REFCNT).word 0x32.word 0x30.word 0x30将其删掉改为 .long 0x22011110 //BWSCON.long 0x00000700 //BANKCON0.long 0x00000700 //BANKCON1.long 0x00000700 //BANKCON2.long 0x00000700 //BANKCON3 .long 0x00000700 //BANKCON4.long 0x00000700 //BANKCON5.long 0x00018005 //BANKCON6.long 0x00018005 //BANKCON7.long 0x008C04F4 // REFRESH.long 0x000000B1 //BANKSIZE.long 0x00000030 //MRSRB6.long 0x00000030 //MRSRB7 重新编译烧写看看什么情况编译烧写成功启动串口输出打印乱码如下至少有打印了说明我们已经成功了第一步哈哈哈 3.1下面解决串口打印乱码问题 查看串口波特率的设置在arch\arm\lib中有函数board_init_f其中有一个结构体init_sequence for (init_fnc_ptr init_sequence; *init_fnc_ptr; init_fnc_ptr) {if ((*init_fnc_ptr)() ! 0) {hang (); 跳转到这个结构体 init_fnc_t *init_sequence[] { #if defined(CONFIG_ARCH_CPU_INIT)arch_cpu_init, /* basic arch cpu dependent setup */ #endif #if defined(CONFIG_BOARD_EARLY_INIT_F)board_early_init_f, #endif #ifdef CONFIG_OF_CONTROLfdtdec_check_fdt, #endiftimer_init, /* initialize timer */ #ifdef CONFIG_FSL_ESDHCget_clocks, #endifenv_init, /* initialize environment */init_baudrate, /* initialze baudrate settings */serial_init, /* serial communications setup */console_init_f, /* stage 1 init of console */display_banner, /* say that we are here */ #if defined(CONFIG_DISPLAY_CPUINFO)print_cpuinfo, /* display cpu info (and speed) */ #endif #if defined(CONFIG_DISPLAY_BOARDINFO)checkboard, /* display board info */ #endif #if defined(CONFIG_HARD_I2C) || defined(CONFIG_SOFT_I2C)init_func_i2c, #endifdram_init, /* configure available RAM banks */NULL, };里面是各种初始化找到串口初始化serial_init跳转到这里 int serial_init(void) {return serial_init_dev(UART_NR); } #endif 然后跳转到这里serial_init_dev /* Initialise the serial port. The settings are always 8 data bits, no parity,* 1 stop bit, no start bits.*/ static int serial_init_dev(const int dev_index) {struct s3c24x0_uart *uart s3c24x0_get_base_uart(dev_index);#ifdef CONFIG_HWFLOWhwflow 0; /* turned off by default */ #endif/* FIFO enable, Tx/Rx FIFO clear */writel(0x07, uart-ufcon);writel(0x0, uart-umcon);/* Normal,No parity,1 stop,8 bit */writel(0x3, uart-ulcon);/** txlevel,rxedge,disable timeout int.,enable rx error int.,* normal,interrupt or polling*/writel(0x245, uart-ucon);#ifdef CONFIG_HWFLOWwritel(0x1, uart-umcon); /* rts up */ #endif/* FIXME: This is sooooooooooooooooooo ugly */ #if defined(CONFIG_ARCH_GTA02_v1) || defined(CONFIG_ARCH_GTA02_v2)/* we need auto hw flow control on the gsm and gps port */if (dev_index 0 || dev_index 1)writel(0x10, uart-umcon); #endif_serial_setbrg(dev_index);return (0); }然后跳转到这里_serial_setbrg void _serial_setbrg(const int dev_index) { struct s3c24x0_uart *uart s3c24x0_get_base_uart(dev_index); unsigned int reg 0; int i; /* value is calculated so : (int)(PCLK/16./baudrate) -1 */ reg get_PCLK() / (16 * gd-baudrate) - 1;writel(reg, uart-ubrdiv); for (i 0; i 100; i)/* Delay */ ;} 跳转到get_PCLK ulong get_PCLK(void) {struct s3c24x0_clock_power *clk_power s3c24x0_get_base_clock_power();return (readl(clk_power-clkdivn) 1) ? get_HCLK() / 2 : get_HCLK(); } 跳转到这里get_HCLK ulong get_HCLK(void) {struct s3c24x0_clock_power *clk_power s3c24x0_get_base_clock_power(); #ifdef CONFIG_S3C2440switch (readl(clk_power-clkdivn) 0x6) {default:case 0:return get_FCLK();case 2:return get_FCLK() / 2;case 4:return (readl(clk_power-camdivn) (1 9)) ?get_FCLK() / 8 : get_FCLK() / 4;case 6:return (readl(clk_power-camdivn) (1 8)) ?get_FCLK() / 6 : get_FCLK() / 3;} 我们会发现#ifdef CONFIG_S3C2440 这一句是黑色的说明没有定义这个CONFIG_S3C2440 处理措施 在include/configs/smdk2440.h: 去掉CONFIG_S3C2410 换成CONFIG_S3C2440 #define CONFIG_S3C2440 定义好这个之后重新编译发现编译有错误如下 错误显示有大量关于nand的错误猜想原因应该是此uboot暂时不支持该单板我决定先把nand去掉先看看串口是否可以正常打印出不是乱码的消息之后再加入nand的支持要一步一步来嘛我们把关于nand的编译选项去掉查看/drivers/mtd/nand/Makefile,找到只一句 COBJS-$(CONFIG_NAND_S3C2410) s3c2410_nand.o 说明编译s3c2410_nand.c以来的定义是CONFIG_NAND_S3C2410在源码中搜索CONFIG_NAND_S3C2410在smdk2440.h中找到 #ifdef CONFIG_CMD_NAND #define CONFIG_NAND_S3C2410 #define CONFIG_SYS_S3C2410_NAND_HWECC #define CONFIG_SYS_MAX_NAND_DEVICE 1 #define CONFIG_SYS_NAND_BASE 0x4E000000 #endif 说明定义了CONFIG_CMD_NAND则CONFIG_NAND_S3C2410就被定义我们只需要让CONFIG_CMD_NAND不被定义即可搜索到如下 #define CONFIG_CMD_NAND 将其改为 //#define CONFIG_CMD_NAND 重新编译没有出现错误烧写测试串口输出为 哈哈哈串口终于输出而且不是乱码了我们已经走出了第一步接下来就是让它支持nand flash了也不是容易的事情啊已经写了这么多了就放到下一篇 博客中吧 想跟我一起交流学的加我 qq1126137994 二维码 微信liu1126137994 二维码 备注交流学习哦 另外我这里有大量的学习资料以及现成的项目的经验总结欢迎叨扰
http://wiki.neutronadmin.com/news/302479/

相关文章:

  • 免费淘宝网站建设天水做网站
  • 广东省住房城乡建设厅门户网站3d建模视频教学
  • 一般门户网站用r做简易的网站
  • 网站受众群体海兴县做网站价格
  • 做团购网站需要注册哪些商标怎么对自己的网页进行修改
  • html网站开发例子做电影网站用什么主机好
  • 双人网页游戏网站精准推广的渠道有哪些
  • 网站推广教程网络推广搜索引擎
  • 一分钟建设网站出口网站制作
  • 网站 框架图网站开发和网站制作的区别
  • 网站开发答辩难点哪个购物网站最便宜
  • wordpress网站慢app制作软件平台
  • 八冶建设集团有限公司网站本地云主机搭建wordpress
  • 做的网站加载太慢怎么办四子王旗建设局网站
  • 财务公司名称大全简单大气seo教程自学网
  • 找人做网站 源码被盗用wordpress各个页面名称标签
  • 网站扁平化设计理念富阳网站建设找哪家
  • 丽水网站域名注册服务公司微网站开发策划
  • 360网站托管WordPress用户中心激活版
  • 手机网站导航栏特效太原seo关键词排名优化
  • 天津宏宇网站建设淘宝网页设计模板html
  • 做网站需要哪个系统营销网络是什么意思
  • 网站开发 设计制作合同建设培训中心网站
  • 企业网站 asp源码h5制作开发价目表
  • 电商具体是什么工作网站优化套餐
  • 手机网站建设 苏州宁宁网seo
  • 茶叶网站策划凡客诚品官方网站首页
  • 史志网站建设方案广告装饰公司名称大全
  • 故城网站建设wordpress更改固定链接页面打不开
  • 怎么用手机网站做软件好网站平台建设可行性