海思HI3520DV400改网络RMII模式uboot开发
- 格式:pdf
- 大小:287.58 KB
- 文档页数:2
Hi3516dv300搭建开发环境——编译osdrv(7)-mtd-utils2.0.2的。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%注意1:如果你要安装automake1.15.1,建议你的安装顺序为:M4 -> autoconf -> automake(⼀定要安照这个顺序,不然会出现很多错误,建议从下⾯的3)开始看),这关于这⼏个包以及相关下载地址会在下⾯有⽂字或图⽚解释.有⼀个问题:我指定安装⽬录的时候⽐如安装m4和autoconf的时候为什么在/usr/local/建⽴名为m4⽂件夹,当m4安装到这个⽂件后为什么安装运⾏./configure --prefix=/usr/local/autoconf就⼀直提⽰要你安装m4,但是你都将他们安装在/usr/local/这同⼀⽬录下就不会出现该问题,我想是不是因为安装在不同⽬录系统是不是识别不了才出现这个问题,注意2:下⾯的⼀、⼆、三、四的安装顺序是我按照说明⽂档的安装顺序,亲测这个顺序是有问题的,在其中我插⼊了遇到的⼀些问题,以及对问题的解决%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1、本⽂的autoconf的安装过程可以参考:https:///xlwang1995/p/10604104.html 注意:只参考它的autoconf安装即可,不要按照它的顺序2、本⽂automake1.15.1的安装与autoconf的安装类似3、本⽂安装顺序参考⾃:https:///ubuntucc/article/details/9264165⼀、mtd-utils2.0.2依赖以下⼏个库,以ubuntu为例,安装⽅式请参考下⾯命令:sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config⼆、由于mtd-utils2.0.2通过pkg-config⼯具检查各个库是否正常安装,因此请参考如下⽅式设置pkg-config⼯具搜索路径:export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/pkgconfig"注:这⼀步可参考链接:https:///weixin_41041772/article/details/102767759理解:输⼊指令:pkg-config --variable pc_path pkg-config出现问题:pkg-config命令未发现,可以安装这个包,安装这个包后重新输⼊该指令,发现这个路径/usr/lib/x86_64-linux-gnu/pkgconfig有了,故可进⾏下⼀步三、mtd-utils2.0.2依赖于automake1.15.1版本,请参考如下⽅式安装automake1.15.1版本:1、删除原有automake版本sudo apt-get autoremove automake2、下载1.15.1版本1)Windows系统中使⽤浏览器访问automake⼯程url并下载对应源码包:https:///archive/html/info-gnu/2017-06/msg00007.html2)linux系统中可以使⽤下⾯命令下载:wget ftp:///gnu/automake/automake-1.15.1.tar.gz3、编译安装automake1.15.1tar zxvf automake-1.15.1.tar.gzcd automake-1.15.1/./configure注:安装到这⼀步出错了,原因是autoconf版本太低了,输⼊指令下载autoconf2.65,(我下载的为2.68),1)输⼊下载的指令为:wget ftp:///gnu/autoconf/autoconf-2.68.tar.gz2)解压到指定⽬录(我解压到root⽬录下),-C为指定路径命令3)出现提⽰需要下载另⼀个包m4,同样⽤wget⽅法4)这次解压⽤绝对路径,(绝对路径是不是为在prefix前⾯加两个减号)指定解压位置:指定安装路径:最后安装编译:4.1)执⾏到这⼀步出现三个错误:4.2)第⼀个错误为:c:83:3:error:#error please port gnulib freadahead.c to your platf orm!Look at the..........解决办法:在在该⽬录下的终端(就是从终端进⼊m4-1.4.14⽬录也⾏)输⼊指令:sed -i 's/IO_ftrylockfile/IO_EOF_SEEN/' lib/*.cecho "#define _IO_IN_BACKUP 0x100" >> lib/stdio-impl.h注意:这指令⾥⾯的IO中的I为⼤写的i, lib/stdio-impl.h这⾥⾯的l位⼩写字母l此步参考链接为:第⼆个为:error:get undeclared here (not in a function);did you mean......出现这个问题,参考链接:https:///weixin_34168880/article/details/91842744按照这个⽅法处理后,竟然⼜出现了两个错误4.3)第三个为:/m4-1.4.14/src/path.c:118: undefined reference to `S_ISDIR'的错误参考链接:https:///ubuntucc/article/details/9264165⾮常感谢这个链接的博主,通过这个⽂章我知道我掉坑⾥去了,知道了正确的安装顺序为:M4 -> autoconf -> automake (很重要!!!!)你要是按照osdrv/tools/jffs2_tool/readme_cn.txt⾥⾯的安装步骤你就会以⼀个相反的安装顺序安装并会出现我上⾯所有的问题,⼀个软件还没安装完问题就出现了,⼜解决这个问题解决问题中⼜出现问题到最后⼀个软件也没安装上。
3518E平台的搭建海思的SDK提供了ISP调试的相关工具,降低了IPC开发ISP调试的难度。
初次搭建ISP调试环境,记录一下。
SDK版本:Hi3518_MPP_V1.0.A.0硬件平台:HI3518E_OV9732工具包:PQ_TOOL (Hi3518E_V100R001C01SPC0A0\01.software\pc\PQ_TOOL)文件说明:Hi3518_ITTB_MPP2_V1.0.A.0_B030.tgz 设备端工具; PQTools_V3.7.5.zip PC端工具环境搭建步骤:(1)将Hi3518_ITTB_MPP2_V1.0.A.0_B030.tgz拷贝至nfs共享目录名,解压后运行HiIspTool.sh脚本倘若用海思自带的工具出图像并调节ISP运行:#./HiIspTool.sh -a -p ov9732_720p_line.inips一下可以看到两个进程696 adminlvj 58488 S ./ittb_stream -p ov9732_720p_line.ini699 adminlvj 19676 S ./ittb_control倘若运行自己的工程出图像了,这时只需要运行一下命令即可。
#./HiIspTool.sh -aps一下可以看到一个进程699 adminlvj 19676 S ./ittb_control(2)PC端直接解压PQTools_V3.7.5.zip,运行HiPQTools.exe,输入选择sdk版本Hi3518_MPP_V1.0.A.0 ,输入设备IP,就可以连接上摄像头倘若运行了ittb_stream,可以PC端软件上打开视频图像窗口连接成功,至此,最简单的ISP调试环境搭建就完成了。
复杂的就是后面的ISP调节过程了。
备注:运行脚本的时候可能会报错,查看相关打印信息,将错误消除。
当前产品我们用的是HI3518E+OV9732,SDK中并没有提供相关的sensor库和相关的config文件,所以运行报错了!解决:将OV9732sensor库拷贝至Hi3518_ITTB_MPP2_V1.0.A.0/libs/下,将ov9732_720p_line.ini拷贝至Hi3518_ITTB_MPP2_V1.0.A.0/configs/下附录:ov9732_720p_line.ini[plain]view plaincopyprint?1.[sensor]2.Sensor_type =ov9732 ;the type of sensor3.Mode =0 ;LINE mode,mode = 0 ,WDR mode,mode =14.DllFile =libs/libsns_ov9732.so ;LineDllFile path5.6.[vi_dev]7.Input_mod =2 ;VI_INPUT_MODE_BT656 = 08. ;VI_INPUT_MODE_BT601,9. ;VI_INPUT_MODE_DIGITAL_CAMERA10.11.Work_mod =0 ;VI_WORK_MODE_1Multiplex = 012.13. ;VI_WORK_MODE_2Multiplex,bine_mode =0 ;Y/C composite or separation mode18.19. ;VI_COMBINE_COMPOSITE = 0 /*Composite mode */20.21. ;VI_COMBINE_SEPARATE, /*Separate mode */22.p_mode =0 ;Component mode (single-component or dual-component)24.25. ;VI_COMP_MODE_SINGLE = 0, /*single component mode */26.27. ;VI_COMP_MODE_DOUBLE = 1, /*double component mode */28.29.Clock_edge =1 ;Clock edge mode (sampling on the rising or falling edge)30.31. ;VI_CLK_EDGE_SINGLE_UP=0, /*rising edge */32.33. ;VI_CLK_EDGE_SINGLE_DOWN, /*falling edge */34.35.Mask_num =2 ;Component mask36.37.Mask_0 =0xFFC0000038.39.Mask_1 =0x043. ;VI_SCAN_PROGRESSIVE,44.45.Data_seq =2 ;data sequence (ONLY for YUV format)46.47. ;----2th component U/V sequence in bt112048.49. ; VI_INPUT_DATA_VUVU = 0,50.51. ; VI_INPUT_DATA_UVUV,52.53. ;----input sequence for yuv54.55. ; VI_INPUT_DATA_UYVY = 0,56.57. ; VI_INPUT_DATA_VYUY,58.59. ; VI_INPUT_DATA_YUYV,60.61. ; VI_INPUT_DATA_YVYU62.63.64.65.Vsync =1 ; vertical synchronization signal69. ;VI_VSYNC_PULSE,70.71.VsyncNeg=0 ;Polarity of the vertical synchronization signal72.73. ;VI_VSYNC_NEG_HIGH = 0,74.75. ;VI_VSYNC_NEG_LOW /*if VIU_VSYNC_E76.77.Hsync =0 ;Attribute of the horizontal synchronization signal78.79. ;VI_HSYNC_VALID_SINGNAL = 0,80.81. ;VI_HSYNC_PULSE,82.83.HsyncNeg =0 ;Polarity of the horizontal synchronization signal84.85. ;VI_HSYNC_NEG_HIGH = 0,86.87. ;VI_HSYNC_NEG_LOW88.89.VsyncValid =0 ;Attribute of the valid vertical synchronization signal90.91. ;VI_VSYNC_NORM_PULSE = 0,95.VsyncValidNeg =0;Polarity of the valid vertical synchronization signal96.97. ;VI_VSYNC_VALID_NEG_HIGH = 0,98.99. ;VI_VSYNC_VALID_NEG_LOW100.101.Timingblank_HsyncHfb =0 ;Horizontal front blanking width102.103.Timingblank_HsyncAct =1280 ;Horizontal effetive width104.105.Timingblank_HsyncHbb =0 ;Horizontal back blanking width106.107.Timingblank_VsyncVfb =0 ;Vertical front blanking height108.109.Timingblank_VsyncVact =720 ;Vertical effetive width110.111.Timingblank_VsyncVbb=0 ;Vertical back blanking height112.113.Timingblank_VsyncVbfb =0 ;Even-field vertical front blanking height(interlace, invalid progressive) 114.115.Timingblank_VsyncVbact=0 ;Even-field vertical effetive width(interlace, invalid progressive) 116.117.Timingblank_VsyncVbbb =0 ;Even-field vertical back blanking height(interlace, invalid progressive)121.;----- only for bt656 ----------122.FixCode =0 ;BT656_FIXCODE_1 = 0,123.124. ;BT656_FIXCODE_0125.126.FieldPolar=0 ;BT656_FIELD_POLAR_STD = 0127.128. ;BT656_FIELD_POLAR_NSTD129.130.DataPath =1 ;ISP enable or bypass131.132. ;VI_PATH_BYPASS = 0,/* ISP bypass */133.134. ;VI_PATH_ISP = 1,/* ISP enable */135.136. ;VI_PATH_RAW = 2,/* Capture raw data, for debug */ 137.138.InputDataType=1 ;VI_DATA_TYPE_YUV = 0,VI_DATA_TYPE_RGB = 1, 139.140.DataRev =FALSE ;Data reverse. FALSE = 0; TRUE = 1141.142.143.[vi_chn]147.CapRect_Y =0148.149.CapRect_Width=1280150.151.CapRect_Height=720152.153.DestSize_Width=1280154.155.DestSize_Height=720156.157.CapSel =2 ;Frame/field select. ONLY used in interlaced mode 158. ;VI_CAPSEL_TOP = 0, /* top field */159. ;VI_CAPSEL_BOTTOM, /* bottom field */ 160. ;VI_CAPSEL_BOTH, /* top and bottom field */ 161.162.PixFormat =19 ;163.164.165.166.SrcFrameRate=-1 ;Source frame rate. -1: not controll167.168.FrameRate =-1 ;T arget frame rate. -1: not controll169.172.Vpss_DrEn =FALSE173.174.Vpss_DbEn =FALSE175.176.Vpss_IeEn =TRUE177.178.Vpss_NrEn =TRUE179.180.Vpss_HistEn =TRUE181.182.Vpss_DieMode=0 ;Define de-interlace mode 183.184. ;VPSS_DIE_MODE_AUTO = 0, 185.186. ;VPSS_DIE_MODE_NODIE = 1, 187.188. ;VPSS_DIE_MODE_DIE = 2, 189.190.[vpss_chn]191.Vpss_W =1280192.Vpss_H =720193.194.[isp_image]195.198.Isp_H =720199.200.Isp_FrameRate=30201.202.Isp_Bayer =3 ;BAYER_RGGB=0, BAYER_GRBG=1, BAYER_GBRG=2, BAYER_BGGR=3 203.204.205.[isp_timing]206.207.Isp_WndMode=0 ;WIND_NONE= 0,WIND_HOR= 1,WIND_VER= 2,WIND_ALL= 3, 208.209.Isp_HorWndStart=0210.211.Isp_HorWndLength=1280212.213.Isp_VerWndStart=0214.215.Isp_VerWndLength=720216.217.[vb_conf]218.219.VbCnt=8220.221.224.RcMode =VENC_RC_MODE_H264CBR225.226.Gop =30227.228.StatTime =1229.230.ViFrmRate =30231.232.T argetFrmRate=25233.;----- only for VENC_RC_MODE_H264CBR ---------- 234.BitRate=4096235.FluctuateLevel=1236.;----- only for VENC_RC_MODE_H264VBR ---------- 237.MaxBitRate =10000238.239.MaxQp=32240.241.MinQp=24242.;----- only for VENC_RC_MODE_H264FIXQP ---------- 243.IQp=20244.245.PQp=23246.247.[bind]248.249.ViDev =0250.251.ViChn =0 252.253.VpssGrp =0 254.255.VpssChn = 0 256.257.VencGrp =0 258.259.VencChn =0 260.261.VoDev =0 262.263.VoChn =0 264.265.ViSnapChn =0 266.267.VpssSnapGrp=0 268.269.VpssSnapChn=1 270.271.VencSnapGrp=1 272.273.VencSnapChn=1。
Hisi3520+USBWIFI(RT3070)做路由器移植过程硬件平台:Hisi3520开发板Linux内核:linux-3.0.y说明:这是一个Hisi3520+RT3070WIFI作为路由器的移植过程!在做下面的过程中,我认为你是有个有点嵌入式开发经验的人,内核源码已经可以编译通过运行等!特别要强调,usb总线驱动一定要是好的。
下面的步骤也描述了如何利用sdk安装交叉编译器。
如需帮助,请联系孙怀亚。
第一步、下载Hi3520A_SDK_V1.0.2.0.tgz,这是海思的开发SDK,可以将第二步、解压缩海思SDK#tar -zxvf Hi3520A_SDK_V1.0.2.0.tgz修改sdk.Unpack文件#vim sdk.unpack将第一行的#!bin/sh改为#!bin/bash,如下图#./sdk.unpack解压完成后目录多出如下目录osdrv,mpp目录:进入osdrv目录#cd osdrv在osdrv目录下,有文件系统工具busybox,内核kernel,交叉编译工具toolchain,uboot 等,目录结构详细说明请看目录的readme_en.txt。
第三步、安装交叉编译器:进入toolchain目录进入arm-hisiv100-linux运行#./cross.install 安装脚本将自动帮你将交叉编译器安装到/opt目录下,同时在/etc/profile文件的最后一行加入环境变量,你可以看一下这两个地方的变动:可以看到/opt目录下多出了hisi-linux目录可以看到/etc/profile文件最后多出了如下几行:运行一下环境变量配置:#Source /etc/profile 这个将重新配置环境变量在中端中输入#arm-hisiv100-linux-gcc –v如果看到如上图信息说明你的交叉编译已经安装完毕,可以使用了!如果没有,你需查找原因,一般会解决的,如果实在不行,请联系孙怀亚。
USB_WIFI移植过程硬件平台:海思3520开发板Linux内核:linux-3.0.y交叉编译器:arm-hisi100-linux-gcc作者:孙怀亚QQ:413983254第1步:下载2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2,这个文件可以在雷凌官网下载。
在做下面的过程中,我认为你是有点嵌入式开发经验的人,并且交叉编译器已经安装完毕,交叉编译器安装请参考交叉编译器安装与配置文档,内核源码已经可以编译通过运行等!特别要强调,usb总线驱动一定要是好的。
内核配置请参考内核裁剪与配置文档第2步:拷贝源码到ubuntu目录下,解压缩#Tar –jxvf2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO.bz2解压#mv 2011_0719_RT3070_RT3370_RT5370_RT5372_Linux_STA_V2.5.0.3_DPO usb_wifi太长改个名# cd usb_wifi#ls可以看到目录如下第3步:编译#Make在os/linux/目录下生成一个rt5370sta.ko文件,在电脑上insmod,这样你的ubuntu便按装好wifi驱动了。
第4步:交叉编译,如果直接将刚才生成的.ko文件在海思3520开发上运行是不行的,你加载模块时会出现提示不识别的模块格式错误,原因是X86和arm平台架构原因。
那么怎么移植呢,首先到驱动源码目录修改makefile,主要是让驱动与内核源码配对!修改makefile如下:#Vim Makefile修改os/linux/config.mk#vim os/linux/config.mk修改如下支持wpa:找到,这里让去的支持WPA修改编译器:这里指的编译器的路径回到顶层执行make#make ARCH=arm CROSS_COMPILE=arm-hisiv100-linux-编译完毕在os/linux目录下生成:rt5370sta.ko在common中生产rt2870.bin第5步.移植到海思3520开发板上:拷贝刚才生成的.ko文件到开发板的目录下(随便哪个目录,只要你自己能找到):在开发板的etc目录下建立Wireless目录,在Wireless下建立RT2870STA目录,拷贝驱动源码目录下RT2870STA.dat到刚建立的文件夹下。
iSpirit 3524G/F交换机常用配置指南(软件版本:iSpirit3524g2v20.img iSpirit3524f2v00.img)(Version 1.0)2004年11月一.基于PORT(端口)的VLAN配置 (3)二.基于802.1Q的VLAN配置 (6)三.VLAN间通信配置 (9)四.STP(生成树协议配置) (19)四.TRUNK 端口聚合 (22)五.MIRROR (端口镜像)配置 (23)六.CONFIGURATION文件上传(备份)和下载配置 (25)七.IMAGE版本升级 (26)八.SNMP配置 (27)九.DHCP RELAY 配置 (30)十.802.1X认证 (31)十一.ACL访问控制列表配置 (34)十二.静态路由 (46)十四.IP配置 (49)附件:配置超级终端 (50)一.基于PORT(端口)的VLAN配置1. 网络需求有两个用户,用户1和用户2,两个用户由于所使用的网络功能和环境不同,需要分别处于不同的VLAN中。
用户1在VLAN2,连接3524G的端口2,用户2在VLAN3,连接端口3。
2. 配置步骤Switch# vlan 2 // 创建vlan 2Vlan 2 addedSwitch(vlan-2)#exitSwitch# vlan 3 // 创建vlan 3Vlan 3 addedSwitch(vlan-3)# vlan 2 // 在创建vlan 2 之后,就可在配置模式下 输入vlan 2 ,进入vlan 2的配置模式Switch(vlan-2)# untag 2 // 将端口2 加入vlan 2,如果还有其它端口要加入vlan 2,那么在 vlan 2 模式下,untag x (x为其它端口号)Switch(vlan-2)# vlan 3 //进入vlan 3 配置模式Switch(vlan-3)# untag 3 //将端口3 加入vlan 3,如果还有其它端口要加入vlan 3,那么在 vlan 3 模式下,untag x (x为其它端口号)Switch(vlan-3)# exit// 注意:本例子中,由于使用的软件版本是2v.00以上(含2v.00),所以pvid 号随着vlan号的更改而自动更改的。
u-boot 技术文档1.U boot 命令详解1.1查看帮助命令使用help 或者?1.2环境变量打印环境变量:printenv设置环境变量:setenv(不会保存)保存环境变量:saveenv这个时候就有了1.3nandflash命令使用nand查看nandflash 所有指令擦除nand erase1.4norflash命令查看Flash信息命令: flinfo加/解写保护命令: protect擦除命令: erase1.5内存命令nm1.5USB指令使用help usb 查看usb具体指令使用usb 启动使用usb tree查看信息f atls usb 0 罗列u盘信息1.5.1实例演练usb指令烧写1.6实例演练ftp指令烧写环境变量中体现了开发板上的IP地址为192.168.0.2,网关为192.168.0.1,要求电上的tftp 服务器的IP为192.168.0.1;运行电脑上tftp服务器,指定好根目录,将内核和根文件系统放在根目录下。
注:线接上后,电脑上的本地连接可能是显示网络电缆没插好,这很正常!在使用过程中它们会自动去连接!<2>分别下载内核和根文件系统到内存0x30008000开始的空间先检查坏块nand bad再擦除坏块清理某个区域0x560000 0x3b22c00将根文件系统加载到0x30008000然后再将根文件系统写到0x560000 0x3b22c00这个位置然后重启:重复上面的步骤:nand erase 0x60000 0x267000将内核文件保存到0x60000 0x267000这块区域运行1.8系统重启指令2.U boot 内核移植在cpu/arm920t/start.S中添加以下代码在修改并添加为以下代码在include/configs/mini2440.h修改为如下:将以下代码修改为:将以下代码修改为:将以下代码修改为:在drivers/mtd/nand/s3c2410_nand.h 在最后下面代码上添加如下带码:。
u-boot 移植步骤详解1 U-Boot简介U-Boot,全称Universal Boot Loader,是遵循GPL条款的开放源码项目。
从FADSROM、8xxROM、PPCBOOT逐步发展演化而来。
其源码目录、编译形式与Linux内核很相似,事实上,不少U-Boot源码就是相应的Linux内核源程序的简化,尤其是一些设备的驱动程序,这从U-Boot源码的注释中能体现这一点。
但是U-Boot不仅仅支持嵌入式Linux系统的引导,当前,它还支持NetBSD, VxWorks, QNX, RTEMS, ARTOS, LynxOS嵌入式操作系统。
其目前要支持的目标操作系统是OpenBSD, NetBSD, FreeBSD,4.4BSD, Linux, SVR4, Esix, Solaris, Irix, SCO, Dell, NCR, VxWorks, LynxOS, pSOS, QNX, RTEMS, ARTOS。
这是U-Boot中Universal的一层含义,另外一层含义则是U-Boot除了支持PowerPC系列的处理器外,还能支持MIPS、x86、ARM、NIOS、XScale等诸多常用系列的处理器。
这两个特点正是U-Boot项目的开发目标,即支持尽可能多的嵌入式处理器和嵌入式操作系统。
就目前来看,U-Boot对PowerPC系列处理器支持最为丰富,对Linux的支持最完善。
其它系列的处理器和操作系统基本是在2002年11 月PPCBOOT 改名为U-Boot后逐步扩充的。
从PPCBOOT向U-Boot的顺利过渡,很大程度上归功于U-Boot的维护人德国DENX软件工程中心Wolfgang Denk[以下简称W.D]本人精湛专业水平和持着不懈的努力。
当前,U-Boot项目正在他的领军之下,众多有志于开放源码BOOT LOADER移植工作的嵌入式开发人员正如火如荼地将各个不同系列嵌入式处理器的移植工作不断展开和深入,以支持更多的嵌入式操作系统的装载与引导。
海思uboot启动流程详细分析(⼀)第⼀阶段 start.S⾸先我们可以在u-boot.lds中看到ENTRY(_start),即指定了⼊⼝_start,_start也就是整个start.S的最开始;1. reset在arch\arm\cpu\armv8\hi3559av100中的start.S注意x30在ARMV8中代表lr寄存器reset:/** Could be EL3/EL2/EL1, Initial State:* Little Endian, MMU Disabled, i/dCache Disabled*/adr x0, vectorsswitch_el x1, 3f, 2f, 1f3: msr vbar_el3, x0mrs x0, scr_el3orr x0, x0, #0xf /* SCR_EL3.NS|IRQ|FIQ|EA */msr scr_el3, x0msr cptr_el3, xzr /* Enable FP/SIMD */#ifdef COUNTER_FREQUENCYldr x0, =COUNTER_FREQUENCYmsr cntfrq_el0, x0 /* Initialize CNTFRQ */#endifb 0f2: msr vbar_el2, x0mov x0, #0x33ffmsr cptr_el2, x0 /* Enable FP/SIMD */b 0f1: msr vbar_el1, x0mov x0, #3 << 20msr cpacr_el1, x0 /* Enable FP/SIMD */0:/** Cache/BPB/TLB Invalidate* i-cache is invalidated before enabled in icache_enable()* tlb is invalidated before mmu is enabled in dcache_enable()* d-cache is invalidated before enabled in dcache_enable()*//** read system register REG_SC_GEN2* check if ziju flag*/ldr x0, =SYS_CTRL_REG_BASEldr w1, [x0, #REG_SC_GEN2]ldr w2, =0x7a696a75 /* magic for "ziju" */cmp w1, w2bne normal_start_flowmov x1, sp /* save sp */str w1, [x0, #REG_SC_GEN2] /* clear ziju flag */adr x0, vectors,其中的vectors代表了异常向量表主要做了如下事情:1)reset SCTRL寄存器具体可参考reset_sctrl函数,由CONFIG_SYS_RESET_SCTRL控制,⼀般不需要打开。
newifi新路由进入u-boot刷机模式教程首先请确保已经将电脑的IP地址设置为192.168.1.2,子网掩码设置为255.255.255.0,打开浏览器(以InternetExplorer11为例)进入路由器u-boot刷机页面(newifi恢复模式)。
在下一步开始之前请确保路由器已经关机断电。
1、按住路由器背面的“RESET”按钮不放并通电开机,直到电源灯常亮并且USB和2.4G指示灯快速闪亮(如果接了WAN口网线则此时WAN指示灯也会缓慢闪亮)后再松手即可。
2、在浏览器地址栏输入http://192.168.1.1然后按Enter键(回车键)。
3、在打开的路由器u-boot刷机页面(newifi恢复模式)单击中间的“浏览”按钮。
4、在弹出的文件浏览窗口中选中想要刷入的固件文件,确认无误后单击右下方的“打开”按钮。
5、这时会返回路由器u-boot刷机页面,确认无误后单击右边的“恢复”按钮开始刷机。
注意:刷机过程中请不要断电或者进行其他操作,否则将导致刷机失败,严重时有可能变砖!
6、刷入固件大概需要2分钟时间,请耐心等待。
7、待提示“升级完毕”时即意味着刷机过程完毕,路由已经自动重新启动并运行新的固件系统了。
8、此时请将电脑IP及DNS重新设置为自动获取即可。
uboot启动阶段修改启动参数⽅法及分析作者:围补本来启动⽅式这节不是什么复杂的事⼉,不过想简单的说清楚明⽩,还真是不知道怎么组织。
毕竟⽂字跟有声语⾔表达有别。
但愿简单的东西别让我讲的太复杂!Arm板系统⽂件⼀般有三个——bootloader(uboot)、kernel(uImage)及根⽂件系统(rootfs)。
在arm板上电后,按uboot->kernel->rootfs的顺序依次启动。
由于开发板上有多种存储介质,三个⽂件可以放在任何可以存储的介质上,因此也就导致⽂件的多种启动⽅式。
本⽂就来讨论,以上三个⽂件对应不通存放位置的不同启动配置。
⼀般开发板上会有flash(Nor or NAND),mmc,emmc,sd卡等。
系统⽂件可以烧写在其中的任意⼀种上,因此也就对应不通的启动。
在开发过程中,有时经常需要改动内核,或者修改应⽤程序,如果每次都修改后都重新烧写到板上的存储介质,会⽐较⿇烦。
因此,为⽅便调试,uImage和rootfs还可以从⽹络启动,即nfs启动。
但uboot只能从板上介质启动。
启动过程其实是先将要启动的⽂件从存储位置拷贝到内存空间,再在内存中运⾏。
因此所谓不同位置启动,也就是从不同位置拷贝⽽已。
下⾯我们以开发板启动为例,分别介绍三个⽂件从不同位置启动的过程⽅法。
我使⽤的开发板上有emmc和两个sd卡。
我们按照启动顺序,依次介绍。
⾸先是uboot启动。
Uboot是三个系统⽂件中第⼀个启动的,对它的拷贝⼯作由cpu中的固件决定。
固件中⽀持从⼏个位置拷贝uboot,它就能存放在⼏个位置上。
⾄于每次启动具体从其中的哪⾥开始,硬件拨码开关决定,对应拨码在开发板⼿册上能查到。
启动之前,先将uboot的⼆进制⽂件拷贝到对应介质。
有两种不同⽅法烧写,如下:1. uboot⼆进制⽂件拷贝到emmc,是通过芯⽚供应商的下载⼯具软件烧写完成;2. 拷贝到sd卡是在linux下,通过dd命令完成的。
海思HI3520DV400改网络RMII模式uboot
开发
本文由俊_竹_科_技原创,欢迎转载,请注明出处。
海思HI3520DV400的uboot默认的RGMII模块。
俊竹科技在做板时,把网络芯片换成RMII 的100M网络芯片。
当然如果你的板子换成MII的芯片,修改的方法一样,只是两个地方值不一样而已。
主要修改以下两个地方:
1、修改uboot配置头文件。
打开uboot的源码目录,找到海思HI3520DV400的头文件,路径参考:Z:\home\hi3520DV400\Hi3521DV100_SDK_V2.0.4.0\osdrv\opensource\uboot\u-boot-2010.06\i nclude\configs
打开目录下的hi3520dv400.h文件,位置大概貌在文件的190行。
修改
#define CONFIG_HIGMAC_PHY1_ADDR1
#define CONFIG_HIGMAC_PHY1_INTERFACE_MODE1/*2*/
CONFIG_HIGMAC_PHY1_INTERFACE_MODE原来的值为2,这里修改为1。
原因是这里是0,MII,1,RMII,2RGMII,根据你的网络芯片修改。
附图。
CONFIG_HIGMAC_PHY1_ADDR的值根据你的硬件情况,看看是否需要修改。
我们的板子是RMII,这里不用修改。
2、修改exsl文件。
打开Hi3520DV400_PINOUT_CN.xlsx文件,参考路径是:hi3520dV400\Hi3521D V100R001C02SPC040\ReleaseDoc\zh\00.hardware\chip\Hi3520DV400
看这个表格的内容,uboot默认的RGMII的值为1,我们需要改为3。
我们打开配置表格
Hi3520dv400-DMEB2LC-uboot-DDR3_1866M_16bit_512M-A7_1000M-BUS_300M.xlsm
参考路径:Z:\home\hi3520DV400\Hi3521DV100_SDK_V2.0.4.0\osdrv\tools\pc\uboot_tools
原值为0x1,我们这里修改为0x3。
做完以上两个步骤后,编译新的uboot源码,生成新的配置exsl,生成新的uboot。
下载到海思HI3520DV400的板子中,uboot板子就可以了。
如果你的网络芯片是MII,也是修改这两个地方。
接下来我们可以开发内核和文件系统了。