找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888
查看: 1769|回复: 3

breed,内存与uboot

[复制链接]
本帖最后由 白云朵朵 于 2021-3-10 15:37 编辑

最近在学习给一个16M+64M的MT7628NN路由器编译固件,使用coolsnowwolf/lede源码和MT76X8,gl-mt300n-v2配置文件。将
  1. glinet,gl-mt300n-v2)
  2.         ucidef_add_switch "switch0" \
  3.                 "1:lan" "0:wan" "6@eth0"
复制代码
修改为
  1. glinet,gl-mt300n-v2)
  2.         ucidef_add_switch "switch0" \
  3.                  "4:lan" "2:lan" "0:wan" "6@eth0"
复制代码
后,3个网口(1WAN 2LAN)全部正常,但是唯独内存有问题,在breed和openwrt中均显示为128MB。

这个路由器的内存是一片EM68B16CWQH-25H,查询为64MB。此外原厂固件UART启动信息

  1. ӭBoot ±.1.3 ¨Feb 2· 2017 - 14:21o39)

  2. Boa2¤: ᫩үC DRAMo  64 MB
  3. 1ÿt¥Αɕnew interface driver usbfs
  4. [    1.272000] usbcore: registered new interface driver hub
复制代码


以及我在openwrt中在/tmp分区下用dd命令创建文件测试均可为证:
  1. root@OpenWrt:/tmp# dd if=/dev/zero of=/tmp/ramtest.img bs=1M count=65
  2. dd: error writing '/tmp/ramtest.img': No space left on device
  3. 60+0 records in
  4. 59+0 records out
  5. root@OpenWrt:/tmp#
复制代码


我最初想通过修改编译文件解决,但是查看lede/target/linux/ramips/dts/mt7628an_glinet_gl-mt300n-v2.dts中没有关于内存的定义。在 请教如何修订openwrt源文件使得路由器识别扩充的内存 中读到
openwrt-19.07以及之前的版本才需要,openwrt-21.02以及之后的版本能从u-boot中获取内存大小上面的代码就不需要了
https://github.com/FireWRT/FireWRT-Uboot

MT7621 的uboot带web

所以为了使这个路由器正常识别到64M内存,是不是只能使用uboot?openwrt编译后输出的固件文件夹中也有u-boot.bin。换u-boot后,还能免编程器刷回breed吗?
我的恩山、我的无线 The best wifi forum is right here.
为了使这个路由器正常识别到64M内存,是不是只能使用uboot?换u-boot后,还能免编程器刷回breed吗?

最好使用原来的uboot,若uboot下可以进入命令行这个没问题

openwrt编译后输出的固件文件夹中也有u-boot.bin

这个uboot不一定能用

openwrt-21.02以及之后的版本能从u-boot中获取内存大小上面的代码就不需要了

这个我现在要更正下,我在5.10.x内核中测试发现有些情况下会获取到错误的内存大小(遇到过256m的设备识别为512M),最好在相关的 dts 文件中定义好设备的内存大小,memory@0{} 那段可以加进去即使openwrt-21.02以及之后的版本也能很好的支持使用自定义内存大小。

但是唯独内存有问题,在breed和openwrt中均显示为128MB。

这是由于 mtk识别内存大小默认是已经写死在uboot/breed

另:mt7628带web的uboot可以选用这个
https://github.com/widora/u-boot-mt7688

点评

原厂固件u-boot有锁,UART连接无法打断启动,而且需要用户名密码,没法愉快使用。我换用了 GL.iNet VIXMINI 的配置,这个和必虎mini配置更接近,测试了一天有了一些收获: 1. lede/target/linux/ramips/mt76x8/base  详情 回复 发表于 2021-3-11 16:51
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
本帖最后由 白云朵朵 于 2021-3-11 16:54 编辑
rtlhq 发表于 2021-3-10 19:34
最好使用原来的uboot,若uboot下可以进入命令行这个没问题

原厂固件u-boot有锁,UART连接无法打断启动,而且需要用户名密码,没法愉快使用。我换用了 GL.iNet VIXMINI 的配置,这个和必虎mini配置更接近,测试了一天有了一些收获:
1. lede/target/linux/ramips/mt76x8/base-files/etc/board.d/02_network :

  1. glinet,microuter-n300|\
  2.         glinet,vixmini)
  3.                 ucidef_add_switch "switch0" \
  4.                         "0:lan" "6@eth0"
  5.                 ;;
复制代码
修改为
  1. glinet,microuter-n300|\
  2.         glinet,vixmini)
  3.                 ucidef_add_switch "switch0" \
  4.                         "4:lan" "2:lan" "0:wan" "6@eth0"
  5.                 ;;
复制代码
这个都是一样的;

2. lede/target/linux/ramips/image/mt76x8.mk :
  1. define Device/glinet_vixmini
  2.   IMAGE_SIZE := 7872k
  3.   DEVICE_VENDOR := GL.iNet
  4.   DEVICE_MODEL := VIXMINI
  5.   SUPPORTED_DEVICES += vixmini
  6. endef
  7. TARGET_DEVICES += glinet_vixmini
复制代码
修改为
  1. define Device/glinet_vixmini
  2.   IMAGE_SIZE := 16064k
  3.   DEVICE_VENDOR := GL.iNet
  4.   DEVICE_MODEL := VIXMINI
  5.   SUPPORTED_DEVICES += vixmini
  6. endef
  7. TARGET_DEVICES += glinet_vixmini
复制代码
vixmini的闪存为8M,扩展到16M;


3. lede/target/linux/ramips/dts/mt7628an_glinet_vixmini.dts

插入memory定义信息后,文件头部看起来大概这样:
  1. // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
  2. /dts-v1/;

  3. #include "mt7628an_glinet_vixmini_microuter.dtsi"

  4. / {
  5.         compatible = "glinet,vixmini", "mediatek,mt7628an-soc";
  6.         model = "GL.iNet VIXMINI";
  7.         memory@0 {
  8.                 device_type = "memory";
  9.                 reg = <0x0 0x4000000>;
  10.         };
  11. };
复制代码
对DTS文件的修改生效了,但是有一点点偏离预期,内存缩水了大概7M:

  1. root@OpenWrt:~# free -m
  2.               total        used        free      shared  buff/cache   available
  3. Mem:          58720       18544       17596        1184       22580       18420
  4. Swap:             0           0           0
复制代码


这个问题的根源在哪里呢?

点评

破案了,虽然不是很明白,但看起来是内核占用了一部分: 57516加上后来被释放的1204刚好是58720 [/backcolor]  详情 回复 发表于 2021-3-11 17:12
我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

 楼主| | 显示全部楼层
白云朵朵 发表于 2021-3-11 16:51
原厂固件u-boot有锁,UART连接无法打断启动,而且需要用户名密码,没法愉快使用。我换用了 GL.iNet VIXMI ...

破案了,虽然不是很明白,但看起来是内核占用了一部分:

  1. Wed Mar  3 23:11:23 2021 kern.info kernel: [    0.000000] Memory: 57516K/65536K available (4658K kernel code, 197K rwdata, 1036K rodata, 1204K init, 197K bss, 8020K reserved, 0K cma-reserved)
复制代码
  1. Wed Mar  3 23:11:23 2021 kern.info kernel: [    0.692480] Freeing unused kernel memory: 1204K
复制代码


57516加上后来被释放的1204刚好是58720

我的恩山、我的无线 The best wifi forum is right here.
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2024-4-27 01:42

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 举报电话:0519-86695797

快速回复 返回顶部 返回列表