完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
demo板上默认的系统内存是512M,我修改了一下boot启动参数为256M后,发现内存启动过程中挂掉了
而且发现dts文件中的 memory [ device_type = "memory"; reg = <0x80000000 0x8000000>; ] 不起作用,注释掉之后不影响启动,清ti的工程师解答一下吧 多谢; |
|
相关推荐
5个回答
|
|
|
|
|
|
修改boot参数过应该程是没有问题的, setenv bootargs 'console=ttyS0,115200n8 mem=256M rootwait=1 rootfstype=ubifs root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048' 下面是启动日志信息: U-Boot 2011.06-00002-gc4611c1-dirty (May 30 2012 - 15:38:01) I2C: ready DRAM: 512 MiB NAND: 128 MiB Bad block table found at page 65472, version 0x01 Bad block table found at page 65408, version 0x01 Net: Ethernet PHY: 88E1111 @ 0x01 TCI6614-EMAC Hit any key to stop autoboot: 0 TCI6614 EVM # printenv baudrate=115200 bootargs=console=ttyS0,115200n8 mem=256M rootwait=1 rootfstype=ubifs root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048 bootcmd=ubi part ubifs; ubifsmount boot; ubifsload 0x88000000 uImage; ubifsload 0x80000200 tci6614-evm.dtb; bootm 0x88000000 - 0x80000200 bootdelay=3 bootfile=tci6614-evm-ubifs.ubi ethact=TCI6614-EMAC ipaddr=192.168.1.222 mtdids=nand0=davinci_nand.0 mtdparts=mtdparts=davinci_nand.0:1024k(bootloader),512k(params)ro,129536k(ubifs) no_post=1 serverip=192.168.1.189 stderr=serial stdin=serial stdout=serial ver=U-Boot 2011.06-00002-gc4611c1-dirty (May 30 2012 - 15:38:01) Environment size: 636/262140 bytes TCI6614 EVM # tftp 0x80000200 tci6614-evm.dtb Using TCI6614-EMAC device TFTP from server 192.168.1.189; our IP address is 192.168.1.222 Filename 'tci6614-evm.dtb'. Load address: 0x80000200 Loading: ## done Bytes transferred = 15255 (3b97 hex) TCI6614 EVM # tftp 0x88000000 uImage Using TCI6614-EMAC device TFTP from server 192.168.1.189; our IP address is 192.168.1.222 Filename 'uImage'. Load address: 0x88000000 Loading: ################################################################# ################################################################# ################################################################# ######### done Bytes transferred = 2983480 (2d8638 hex) TCI6614 EVM # bootm 0x88000000 - 0x80000200 ## Booting kernel from Legacy Image at 88000000 ... Image Name: Linux-3.3.0 Created: 2013-09-06 7:22:12 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2983416 Bytes = 2.8 MiB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK ## Flattened Device Tree blob at 80000200 Booting using the fdt blob at 0x80000200 Loading Kernel Image ... OK OK Loading Device Tree to 9febe000, end 9fec4b96 ... OK Starting kernel ... boot command line:console=ttyS0,115200n8 mem=256M rootwait=1 rootfstype=ubifs root=ubi0:rootfs rootflags=sync rw ubi.mtd=2,2048. reg[4] = 0x61666564,reg[5] = 0x2d746c75,reg[6] = 0x706f7264,reg[7] = 0x6c6f702d. memory scan node memory, reg size 8, data: 80 20 2000000 1000000, endp = 0xdfebe178, reg = 0xdfebe170,addr_cells = 0x1, size = 0x1. - 80000000 , 20000000 ---------------我在内核中添加的打印,无论dts的memory如何变动,这里始终没有变化,和代码分析解释不同 U-Boot 2011.06-00002-gc4611c1-dirty (May 30 2012 - 15:38:01) 请问如果我要修改系统内存,该如何做? |
|
|
|
不会不会 发表于 2018-6-21 14:17 您好: 修改Memory大小不单单需要修改Linux Kernel,还需要修改U-Boot中的相应代码,我以Arago网站上最新版本(DEV.SC-MCSDK-02.00.01.15P7)的TCI6614的U-Boot中的代码为例: 您也许从您之前帖子中的打印信息中注意到,一开始通过TFTP加载dtb文件的大小与U-Boot打印的最终loading的Device Tree文件大小不一致: Filename 'tci6614-evm.dtb'. Load address: 0x80000200 Loading: ## done Bytes transferred = 15255 (3b97 hex) ... ... ... OK Loading Device Tree to 9febe000, end 9fec4b96 ... OK // 0x9FEC_4B96 - 0x9FEB_E000 = 0x6B96 实际上U-Boot会根据实际硬件检测和配置的信息对已编译好的DTB文件进行再一次的更新以及封装,所以传入Linux Kernel里面的文件大小会有所改变。 做这些修改的代码在$[U_BOOT_CODE_ROOT]/arch/arm/lib/bootm.c中的函数"bootm_linux_fdt",这个函数会在引导Kernel之前对已有的DTB文件进行解析和更新再封装(前提是在使用Device Tree的宏使能的情况下,使用Tags的时候不会执行)。 在这个函数里会调用位于同一文件中的函数“fixup_memory_node”对DTB中的“Memory”节点进行更新: static int fixup_memory_node(void *blob) [ bd_t *bd = gd->bd; int bank; u64 start[CONFIG_NR_DRAM_BANKS]; u64 size[CONFIG_NR_DRAM_BANKS]; for (bank = 0; bank < CONFIG_NR_DRAM_BANKS; bank++) [ start[bank] = bd->bi_dram[bank].start; size[bank] = bd->bi_dram[bank].size; ] return fdt_fixup_memory_banks(blob, start, size, CONFIG_NR_DRAM_BANKS); ] 位于$[U_BOOT_CODE_ROOT]/common/fdt_support.c中的函数"fdt_fixup_memory_banks"会将“ start[bank]”和“size[bank]”带入DTB中进行更新“memory”节点信息;其中: “ start[bank]”和“size[bank]”的值分别是头文件$[U_BOOT_CODE_ROOT]/include/configs/tci6614_evm.h中定义的(此处略过赋值过程): /* Memory Info */ #define PHYS_SDRAM_1 0x80000000 #define PHYS_SDRAM_1_SIZE (512 << 20) /* 512 MB, 0x20000000*/ 所以,单纯修改DTS之后重新编译DTB文件的话,DTB里面的“memory”节点内容会被U-Boot中的配置参数所覆盖,这也就是为什么您总是看到打印 - 80000000 , 20000000的原因。 |
|
|
|
dsagfasdfas5 发表于 2018-6-21 14:27 谢谢你的详细回答,我还想知道,如果我要修改arm的系统内存从【80000000,a0000000】改为[a0000000,c0000000],请问如何修改? 我把boot中的配置修改为 #define PHYS_SDRAM_1_SIZE (512 << 20) /* 512 MB */ #define PHYS_SDRAM_1 (0xc0000000-PHYS_SDRAM_1_SIZE) 但是没有找到在哪儿修改内核入口地址的地方,所以内核跳转不了 TCI6614 EVM # tftp 0xa0000200 tci6614-evm.dtb Using TCI6614-EMAC device TFTP from server 192.168.1.189; our IP address is 192.168.1.222 Filename 'tci6614-evm.dtb'. Load address: 0xa0000200 Loading: ## done Bytes transferred = 15255 (3b97 hex) TCI6614 EVM # tftp 0xa8000000 uImage Using TCI6614-EMAC device TFTP from server 192.168.1.189; our IP address is 192.168.1.222 Filename 'uImage'. Load address: 0xa8000000 Loading: ################################################################# ################################################################# ################################################################# ######### done Bytes transferred = 2983256 (2d8558 hex) TCI6614 EVM # bootm 0xa8000000 - 0xa0000200 ## Booting kernel from Legacy Image at a8000000 ... Image Name: Linux-3.3.0 Created: 2013-09-17 2:42:59 UTC Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2983192 Bytes = 2.8 MiB Load Address: 80008000 Entry Point: 80008000 Verifying Checksum ... OK ## Flattened Device Tree blob at a0000200 Booting using the fdt blob at 0xa0000200 Loading Kernel Image ... OK OK Loading Device Tree to afb3f000, end afb45b96 ... OK Starting kernel ... |
|
|
|
不会不会 发表于 2018-6-21 14:40 您好: 请您参考我们的Wiki Page,里面有一些Linux和U-Boot常用修改的一些方法与步骤,对于您这个问题,请见链接如下: http://processors.wiki.ti.com/index.php/MCSDK_UG_Chapter_Exploring#How_to_run_Linux_kernel_from_a_different_physical_address_than_default_.280x80000000.29.C2.A0.3F |
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
684 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
600 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1055 浏览 1 评论
741 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
525 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
163浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
127浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
127浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
123浏览 12评论
GD32F303RCT6配置PA4 ADC引脚,将PA2代替key功能,PA2连接时无法实现预期功能,为什么?
22浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 12:11 , Processed in 0.819825 second(s), Total 58, Slave 51 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号