qn1541395650

qn1541395650

0个粉丝

3

问答

0

专栏

0

资料

qn1541395650  发布于  2018-11-21 21:57:26
采纳率 0%
3个问答
5359

求大哥指点!已爆炸!Hi3521a 网络问题 PHY地址修改 ifconfig失败

 
新手,不知道应该保存好板子自带的u-boot,直接烧没了,编译sdk源码生成的u-boot烧进板子里,phy地址错误,不知道怎么改,假如:
#define CONFIG_NET_HIGMACV300
#ifdef CONFIG_NET_HIGMACV300
    #define CONFIG_GMAC_NUMS        2
   // #define HIGMAC0_IOBASE          0x10090000
  #define HIGMAC1_IOBASE          0x10091000         
  //  #define CONFIG_HIGMAC_PHY1_ADDR     1
   #define CONFIG_HIGMAC_PHY2_ADDR        2           
  //  #define CONFIG_HIGMAC_PHY1_INTERFACE_MODE   1
  #define CONFIG_HIGMAC_PHY2_INTERFACE_MODE   2   
这样改,编译的的时候会报错mdio.c编译出错“HIGMAC0_IOBASE”这未声明,我把用了这个变量的代码全注释掉,ctrl.c出错。我只是想
这样:

不知道到底要改几处地方,源码又没注释,偶尔来个/*FIXME*/真心找不准。
后来,我烧了厂家提供的一个u_boot,网络通了,基本上该有的有了,but我自己把sdk里的内核源码和根文件系统编译了一下,并且烧
到板子上去了,又见到了"Welcome to HiLinux"。当我准备挂上网卡,设置ip地址的时候,报错:

启动信息:


u-boot和内核的PHY地址又对不上,准确的说是这次用别人的u-boot PHY地址和别的网络配置设置正确了,但是我自己编译出来的内核镜
像的PHY地址和网络配置又不对了,进到menuconfig里看了下,没看懂,不知道该怎么改,:dizzy: 这才第一步啊,后续的问题.............
求大神帮帮忙,指点一下小弟,刚毕业对这些都太生疏了。感谢感谢~
我来回答
回答7个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-11-22 08:49:01
认可0
uboot 如果只是phy地址和MAC与PHY的接口
修改include/configs/hi3521a.h下面部分

#define CONFIG_NET_HIGMACV300
#ifdef CONFIG_NET_HIGMACV300
        #define CONFIG_GMAC_NUMS                1                                     <-- hi3521a 只有一个MAC,所以是1,下面带2的宏都注释掉
        #define HIGMAC0_IOBASE          0x100A0000
/*        #define HIGMAC1_IOBASE          0x10091000          */
        #define CONFIG_HIGMAC_PHY1_ADDR                2                      <-- phy的地址,看楼主的要求是2
/*        #define CONFIG_HIGMAC_PHY2_ADDR                2          */
        #define CONFIG_HIGMAC_PHY1_INTERFACE_MODE        0      <-- mac和phy的接口,0:MII,1:RMII,2:RGMII, 看楼主得要求是MII
/*        #define CONFIG_HIGMAC_PHY2_INTERFACE_MODE        2 */
        #define CONFIG_HIGMAC_DESC_4_WORD
#endif

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-11-22 08:57:12
认可0
本帖最后由 zhuangweiye 于 2018-11-22 08:58 编辑

内核部分配置
#make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig

Device Drivers > Network device support > Ethernet driver support > hieth gmac family network device support
其中
(2)   hieth-gmac phy0 addr                      <-- phy地址
(1)   hieth-gmac phy0 interface mode        <-- 1: MII, 5:RMII, 6: RGMII

qn1541395650

0个粉丝

3

问答

0

专栏

0

资料

qn1541395650 2018-11-22 14:25:12
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=112576&ptid=53734]zhuangweiye 发表于 2018-11-22 08:57[/url]
内核部分配置
#make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- menuconfig

[/quote]

感谢您的不吝赐教,非常感谢!您的专业知识令小弟敬佩,您助人为乐的精神值得小弟学习,您提供的解决方案都是对的,都
达到了预期效果。给力!
但是我的情况有点麻烦,经过一个上午的折腾,反复的实验了n次之后,我得出的结论是,Hisi的u-boot要修改的地方有点多,本
人愚钝并非朝夕就能掌握,老板给我的时间不多了,所以我决定先用厂家送到u-boot算了。买的“鸟哥的linux”和“unix高级编程”
到了,我先翻翻书,看看能不能有什么发现吧。还要看内核源码。。。难受。
做了几张图片,如果您有时间的话麻烦看看,希望能再指点一下小弟,稍微讲解一下就行。:lol
当然,我也不能耽误您太多时间,后面的内容会比较烦人。
这是我编译了官方sdk里面的u-boot,烧进板子后的现象:

这是我将厂家送到u-boot烧进板子后的效果:


将这个调好的u-boot烧好之后,我将官方sdk里面的内核源码编译生成镜像加上根文件系统一起烧进开发板,接着我这样:
/mnt/mpp/ko # ./load3521a -i                             <---------nfs映射的虚拟机里的目录,其实我并不知道这一步是在干什么。。。
Hisilicon Media Memory Zone Manager
ERROR: Conflict MMZ:                                                                       <---------内存地址弄错了?那个ddr分配表弄错了?
PHYS(0x84000000, 0x9FFFFFFF), GFP=0, nBYTES=458752KB,        NAME="anonymous"
MMZ conflict to kernel memory (0x80000000, 0x851FFFFF)
Add MMZ failed: PHYS(0x84000000, 0x9FFFFFFF), GFP=0, nBYTES=458752KB,        NAME="anonymous"
Module himedia: init ok                                                                      <---------这里又ok
hi3521a_base: module license 'Proprietary' taints kernel.
Disabling lock debugging due to kernel taint
MmzMalloc buffer for dci coef fail!                                                        <---------malloc失败?
Unable to handle kernel NULL pointer dereference at virtual address 00000000
pgd = c4fd4000
[00000000] *pgd=8462b831, *pte=00000000, *ppte=00000000
Internal error: Oops: 17 [#1] ARM
Modules linked in: hi3521a_sys(PO+) hi3521a_base(PO) hi_media(O) hiuser(O) mmz(O)
然后打印了很多值,不知道哪里的值,最后报了段错误,然后死机了。
小公司,没人带,各位看到这个帖子的网友引以为戒吧。

qn1541395650

0个粉丝

3

问答

0

专栏

0

资料

qn1541395650 2018-11-22 14:38:07
认可0
还有,各位大侠是怎么知道那些个参数是怎么配置的?哪些值代表哪些意思?在哪看的?我怎么没看到有注释?

qn1541395650

0个粉丝

3

问答

0

专栏

0

资料

qn1541395650 2018-11-22 15:19:10
认可0
后面那个错误我在网上查了一波,是板子设计的不同,用的不同的内存颗粒等等,内存分配的地址就不能用官方的,要改下load3521a这个文件,里面有关于地址分配的地方(第8行下面的几行)。以及一系列的硬件驱动的安装,都在这个文件中体现(101开始/*driver load*/)。

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2018-11-22 15:36:49
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=112644&ptid=53734]qn1541395650 发表于 2018-11-22 14:38[/url]
还有,各位大侠是怎么知道那些个参数是怎么配置的?哪些值代表哪些意思?在哪看的?我怎么没看到有注释?[/quote]


首先要知道内存在海思上基本上分为两块,分别是OS用和MMZ,其中OS是给操作系统(比如linux)用的,MMZ是海思模块(比如VI/VENC/VPSS等等)用的

举例来说:板子有256M内存,分128M给OS,剩下128M给MMZ
1.   那么在uboot中的bootargs中有mem=128M 对应了128M给OS
2.   MMZ定义是在脚本load3521a中,实际就是加载一个驱动时填写好其实地址长度等等
一般是下面的命令
        insmod mmz.ko mmz=anonymous,0,$mmz_start,$mmz_size anony=1 || report_error

其中anonymous是名字,$mmz_start是MMZ的起始物理地址,$mmz_size是长度
3521a的内存的起始物理地址是0x80000000,前面是OS,例子是128M所以,MMZ的起始地址就是0x88000000(0x80000000+128M),长度为128M(总长度-OS长度),所以命令可以写为
        insmod mmz.ko mmz=anonymous,0,0x88000000,128M anony=1 || report_error

楼主 load3521a就出问题了,应该是OS内存和MMZ重叠了

qn1541395650

0个粉丝

3

问答

0

专栏

0

资料

qn1541395650 2018-11-22 16:15:37
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=112659&ptid=53734]zhuangweiye 发表于 2018-11-22 15:36[/url]
首先要知道内存在海思上基本上分为两块,分别是OS用和MMZ,其中OS是给操作系统(比如linux)用的,MMZ ...[/quote]

好的,谢谢哥。冒昧的问一句,您是不是觉得u-boot和内核要讲的东西有点多,所以这把给我讲解了一下内存的问题?:lol
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区