您尚未登录。

楼主 #1 2018-03-22 19:28:56

sgf201
会员
注册时间: 2018-03-22
已发帖子: 12
积分: 12

HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

HLK-7688开发板,由于官方uboot没有输出信息,刷了Wooya的uboot,固件下载OPenwrt官方的LINKIT开发板版本LEDE17版本的可以正常开机,刷LEDE15版本也可以,但是我自己编译固件bin然后下载的话就会提示下面的Panic.
[ 0.730000] VFS: Cannot open root device "(null)" or unknown-block(0,0): error -6

[ 0.740000] Please append a correct "root=" boot option; here are the available partitions:

[ 0.760000] 1f00 192 mtdblock0 (driver?)

[ 0.770000] 1f01 64 mtdblock1 (driver?)

[ 0.780000] 1f02 64 mtdblock2 (driver?)

[ 0.790000] 1f03 32448 mtdblock3 (driver?)

[ 0.800000] Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

[ 0.800000] ---[ end Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

[ 82.700000] random: nonblocking pool is initialized


大概意思就是无法挂载根文件系统。可是我编译的时候芯片选择的7688,开发板选择的LINKIT别的什么都没有改动,但是17和15两个版本都会panic.

查网上的文档,有人说是uboot中文件系统地址写的和固件中地址不一样,原因是有的uboot分了0x2000,有的分了0x3000,导致文件系统位置错位,自然就无法识别。
可是有个问题是如果是这个原因为何官方编译的bin固件就可以启动呢?
由于我没有编程器,不敢改动boot.怕费了就费了,我把固件dts文件中uboot的大小从3000改为了2000,重新编译依然是报相同的错误。
麻烦大侠们给分析下情况,在不改动boot的状态下如何填下这个坑。
如果还是怀疑uboot的问题的话,有没有啥官方途径能得到正确的uboot,自己编的不敢写,没有编程器,谢谢啦

离线

#2 2018-03-22 19:39:16

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

看起来是bootargs里面的分区划分出错了。





离线

#3 2018-03-22 19:40:07

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

你把正常板子和不正常板子的bootargs都贴出来看下。





离线

楼主 #4 2018-03-23 07:25:09

sgf201
会员
注册时间: 2018-03-22
已发帖子: 12
积分: 12

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

晕哥,你说的bootargs是指的解压内核前打印的还是解压后打印的?官方内核解压完内核启动信息就改成串口三打印了,我的开发板没有串口三,Wpanic这段在切换之后

离线

#5 2018-03-23 07:30:43

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

bootargs是linux的启动参数,一般是由u-boot传导给内核的,所以你可以在u-boot的命令行用printenv等命令看到这个值,然后贴上来





离线

楼主 #6 2018-03-23 07:30:55

sgf201
会员
注册时间: 2018-03-22
已发帖子: 12
积分: 12

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

关键问题是官方的固件也应该是用个我一样的编译配置编出来的,官方的没事,我的却不行,这个arg是在编译阶段修改的吗?

离线

楼主 #7 2018-03-23 07:33:12

sgf201
会员
注册时间: 2018-03-22
已发帖子: 12
积分: 12

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

好的,我去打印下

离线

#8 2018-03-23 07:35:21

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

一般在uboot里面改,kernel里面也可以改。





离线

楼主 #9 2018-03-23 07:36:58

sgf201
会员
注册时间: 2018-03-22
已发帖子: 12
积分: 12

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

如果是uboot有问题,官方固件有可能不用uboot传入的信息吗?在传信息这步自己编和官网编的有可能有区别?两个都是LINKIT板子

离线

楼主 #10 2018-03-23 07:50:04

sgf201
会员
注册时间: 2018-03-22
已发帖子: 12
积分: 12

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

启动过程中,我可以进boot.打印出来发现不对的话,修改好,然后继续启动过程是吧?

离线

#11 2018-03-23 08:05:24

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

你看下这个帖子的三楼: openwrt分区问题
bootargs里面这个参数 mtdparts=spi32766.0:1M(uboot)ro,64k(dtb)ro,9M(kernel)ro,-(rootfs)可以划分spi flash分区,
前提当然是 .config 里面把 CONFIG_MTD_CMDLINE_PARTS=y 编译开关打开
不过应该是已经打开了,如果没有打开就自己打开一下。





离线

楼主 #12 2018-03-23 08:37:53

sgf201
会员
注册时间: 2018-03-22
已发帖子: 12
积分: 12

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

要修改.config的话,是不是就得重编uboot呀?另外编固件的时候有办法让uboot传过来的参数不生效,而用dts里边的分区信息吗?

离线

#13 2018-03-23 08:49:21

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

要修改.config的话,是不是就得重编uboot呀

CONFIG_MTD_CMDLINE_PARTS=y 是linux内核的编译开关, 不是u-boot的

u-boot的dts我觉得是给u-boot的命令行用的,方便在u-boot操作flash里面的文件,
一旦 kernel跑起来了, 根本就不认u-boot dts里面设置的分区了,
kernel 只认自己驱动或者bootargs的分区划分。

以上是我猜测,不过应该是接近真理。





离线

楼主 #14 2018-03-23 08:57:15

sgf201
会员
注册时间: 2018-03-22
已发帖子: 12
积分: 12

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

晕哥 说:

要修改.config的话,是不是就得重编uboot呀

CONFIG_MTD_CMDLINE_PARTS=y 是linux内核的编译开关, 不是u-boot的

u-boot的dts我觉得是给u-boot的命令行用的,方便在u-boot操作flash里面的文件,
一旦 kernel跑起来了, 根本就不认u-boot dts里面设置的分区了,
kernel 只认自己驱动或者bootargs的分区划分。

以上是我猜测,不过应该是接近真理。

这么说的话,固件编译的时候,或者说编译完的固件不受dts文件的影响哈dts文件的话也是在uboot读取使用的是吧,为何LEDE固件源码里有dts,而且启动内核后log信息打印也确实是按dts里配置的走,是说dts里的分区是给uboot看的,但像打印一类的还是内核看的吗?还是说内核启动了其实uboot也还有代码段在被kernel调用然后去查询的dts文件?

离线

#15 2018-03-23 09:59:56

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

u-boot也会将某些参数(比如LCD)传导给内核,
这样只要在u-boot里面设置一次参数即可,参考 如何讲uboot和内核的启动过程输出到液晶屏上?具体需要哪些操作?
这个V3s就是只要在u-boot里面设置一次LCD参数,然后用技巧把u-boot的参数读到kernel的dts里面,使之共享了这组参数。

但是我觉得你这个系统两个dts应该还是互不影响的, 从u-boot命令行读出bootargs对比入手比较好。





离线

楼主 #16 2018-03-23 11:10:52

sgf201
会员
注册时间: 2018-03-22
已发帖子: 12
积分: 12

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

晕哥 说:

u-boot也会将某些参数(比如LCD)传导给内核,
这样只要在u-boot里面设置一次参数即可,参考 如何讲uboot和内核的启动过程输出到液晶屏上?具体需要哪些操作?
这个V3s就是只要在u-boot里面设置一次LCD参数,然后用技巧把u-boot的参数读到kernel的dts里面,使之共享了这组参数。

但是我觉得你这个系统两个dts应该还是互不影响的, 从u-boot命令行读出bootargs对比入手比较好。

能启动的官方固件和不能启动的我自己编译的固件的uboot是没有变化的,在uboot命令行(看你的帖子,发现有可能我的uboot不带命令行)里打印bootarg会有可能不同吗?能启动的版本与不能启动的版本只有固件部分不同

离线

#17 2018-03-23 11:26:54

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

sgf201 说:
晕哥 说:

u-boot也会将某些参数(比如LCD)传导给内核,
这样只要在u-boot里面设置一次参数即可,参考 如何讲uboot和内核的启动过程输出到液晶屏上?具体需要哪些操作?
这个V3s就是只要在u-boot里面设置一次LCD参数,然后用技巧把u-boot的参数读到kernel的dts里面,使之共享了这组参数。

但是我觉得你这个系统两个dts应该还是互不影响的, 从u-boot命令行读出bootargs对比入手比较好。

能启动的官方固件和不能启动的我自己编译的固件的uboot是没有变化的,在uboot命令行(看你的帖子,发现有可能我的uboot不带命令行)里打印bootarg会有可能不同吗?能启动的版本与不能启动的版本只有固件部分不同

正是因为你没有修改 u-boot的bootargs的参数导致不能启动,
因为两个版本kernel里面分区划分不同,
导致另外一个版本的kernel没有办法加载 根文件系统rootfs, 所以启动失败。

有两个办法

1. 你把不能启动的kernel的dts调整与可以启动的一致
2. 你把不能启动的kernel的u-boot把bootargs设置与kernel要求的一致.

这两个办法最终都是能让Linux启动找到自己的根文件系统,否则系统就会起不来!





离线

楼主 #18 2018-03-23 11:44:52

sgf201
会员
注册时间: 2018-03-22
已发帖子: 12
积分: 12

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

晕哥,我晕了,你是说官方出的编好的bin里的dts和它源码里的dts有区别?它出的bin也写着是LINKIT版本的?有没有可能我的固件里就是没有根文件系统?make menuconfig或者某个地方配置会导致rootfs没包进bin吗?我编译出来的bin好像是小一些

离线

#19 2018-03-23 11:47:17

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

sgf201 说:

晕哥,我晕了,你是说官方出的编好的bin里的dts和它源码里的dts有区别?它出的bin也写着是LINKIT版本的?有没有可能我的固件里就是没有根文件系统?make menuconfig或者某个地方配置会导致rootfs没包进bin吗?我编译出来的bin好像是小一些

方便发个帖子告诉我LINKIT怎么编译吗?我手里有widora mt7688开发板,或许我可以帮你试一试。





离线

楼主 #20 2018-03-23 12:48:19

sgf201
会员
注册时间: 2018-03-22
已发帖子: 12
积分: 12

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

晕哥 说:
sgf201 说:

晕哥,我晕了,你是说官方出的编好的bin里的dts和它源码里的dts有区别?它出的bin也写着是LINKIT版本的?有没有可能我的固件里就是没有根文件系统?make menuconfig或者某个地方配置会导致rootfs没包进bin吗?我编译出来的bin好像是小一些

方便发个帖子告诉我LINKIT怎么编译吗?我手里有widora mt7688开发板,或许我可以帮你试一试。

好的,晚上发

离线

#21 2018-03-24 20:55:55

mango
会员
所在地: 芒果派1
注册时间: 2017-12-02
已发帖子: 780
积分: 731

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

openwrt里,cc15版本,bootargs放到了dts里,没有处理uboot传过来的。
无涯那孙子抄我的uboot,现在固件已经不敢抄我的了。
所以你直接刷widora的uboot: wiki.widora.cn
内核也直接刷,如果能跑,就按照wiki编译即可。
这种问题要么是启动参数确实错误了,要么是你编译的那份代码里缺少它的SPI flash驱动。

最近编辑记录 mango (2018-03-24 21:04:19)






歪朵拉开源硬件: https://widora.cn
淘宝:  https://widora.taobao.com/

离线

#22 2018-03-24 21:11:55

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

哈,感谢老大到此一游,芒果老大消消气。





离线

#23 2018-03-24 21:24:26

mango
会员
所在地: 芒果派1
注册时间: 2017-12-02
已发帖子: 780
积分: 731

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

这个倒没啥生气的,只要无涯、还有什么云联芯这些不太过分就行。
做开源尤其是在国内本来不易,还有几个苍蝇跟在后边乱咬,就比较容易上火了。
哦,对了,wooya的商标在我手里。:D






歪朵拉开源硬件: https://widora.cn
淘宝:  https://widora.taobao.com/

离线

#24 2018-03-24 21:49:30

cityf
会员
注册时间: 2017-11-03
已发帖子: 195
积分: 195

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

国内开源事业确实不容易。


这不,今天看到这个
http://linux-sunxi.org/GPL_Violations

我用google自动翻译:

GPL违规
Allwinner一再违反GPL(通过代理,所以大多数硬件制造商和经销商使用或销售基于Allwinner芯片组的产品)。要么根本不提供(Linux / Android)内核或u-boot源代码,要么通过提供预构建的二进制文件并且没有匹配的源代码来交付树。他们甚至公然在其用户空间库中使用LGPL许可代码进行媒体解码。
随着时间的推移,Allwinner只会增加其内核树中存在的二进制斑点,清楚地表明 - 尽管Allwinner在此期间(2014年3月)加入了Linaro,但并未取得进展。事实上恰恰相反,如果一个成员被允许像这样行事,就必须担心Linaro会员的真正价值。
Allwinner也于 2015年6月加入Linux基金会,但合规问题显然依然存在。

连大公司都不遵守开源规则、协议,个人就可想而知了。

最近编辑记录 cityf (2018-03-24 21:50:26)

离线

楼主 #25 2018-03-28 18:29:25

sgf201
会员
注册时间: 2018-03-22
已发帖子: 12
积分: 12

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

感谢大老支招
我那个7688的板子刷wadora的boot 波特率是115200打出来全是乱码,只有几个 1 2 3 能打印出来,然后我感觉就是我编译的固件没有文件系统,因为我编出来是2.8M,官方的是3.3M,kernel能启动是不是说明flash的驱动没问题呢?稍后我贴一下编译过程吧

离线

#26 2018-03-28 18:36:27

晕哥
管理员
注册时间: 2017-09-06
已发帖子: 9,342
积分: 9202

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

按照widora的教程编译不会错的
如果差这么多,换电脑试一试,
直接下载更新widora官网的固件试一试。





离线

#27 2018-03-28 20:56:24

mango
会员
所在地: 芒果派1
注册时间: 2017-12-02
已发帖子: 780
积分: 731

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

@sgf201
默认固件是6MB
uboot乱码你肯定用了ch340,建议换掉,用cp2102,ft232这些,兼容性好也稳定。
可以直接到 wiki.widora.cn 下载固件先测试






歪朵拉开源硬件: https://widora.cn
淘宝:  https://widora.taobao.com/

离线

#28 2020-04-30 03:11:32

regbbs
会员
注册时间: 2020-04-06
已发帖子: 80
积分: 67.5

Re: HLK7688A开发板,刷官方LEDE的LINKIT固件可以开机,但同样的uboot下,烧写原版代码自己编译的固件就会panic,无法识别文

我把HLK7688A刷了widora的uboot,直接uart0/1都歇菜,没有任何输出,也不能交互,倒是可以引到linux。
只能想办法拆开刷spi flash了。

最近编辑记录 regbbs (2020-04-30 03:12:08)

离线

页脚

工信部备案:粤ICP备20025096号 Powered by FluxBB

感谢为中文互联网持续输出优质内容的各位老铁们。 QQ: 516333132, 微信(wechat): whycan_cn (哇酷网/挖坑网/填坑网) service@whycan.cn