完善资料让更多小伙伴认识你,还能领取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 |
|
|
|
|
只有小组成员才能发言,加入小组>>
550 浏览 0 评论
1613 浏览 0 评论
2047 浏览 0 评论
为啥BQ7693003DBTR芯片在和BQ769X0盒子通讯时收不到信号?
1514 浏览 0 评论
DSP 28027F 开发板 XDS100v2调试探针诊断日志显示了 Error -150 (SC_ERR_FTDI_FAIL)如何解决
1338 浏览 0 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
1757浏览 29评论
2783浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
1724浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
1634浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
1645浏览 13评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 15:01 , Processed in 0.840749 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
1629