现在2015.04版uboot已经真正可以为我们的E9服务了,接下来就是移植内核,其实自3.x以后的新版内核移植起来已经相当省心省力了,主要就是修改dts文件,方便起见,我们还是先把tftp、nfs的pc端和板子都配好,方便我们使用网络启动调试。

1.uboot环境变量设置:

    TQE9>> setenvconsole ttymxc0
    TQE9>> setenv ipaddr 192.168.253.50
    TQE9>> setenv serverip 192.168.253.101
    TQE9>> setenv ethaddr 00:01:02:03:04:05
    TQE9>> setenv bootfile zImage
    TQE9>> setenv fdt_file imx6q-tqe9.dtb
    TQE9>> setenv loadaddr 0x12000000
         TQE9>> setenv fdt_addr 0x18000000

TQE9>> setenv mynetargs'setenv bootargs console=${console},${baudrate} ${smp} root=/dev/nfs ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp'

TQE9>> setenv bootcmd_net 'run mynetargs;tftpboot ${loadaddr} ${bootfile};tftpboot ${fdt_addr} ${fdt_file};bootz ${loadaddr} - ${fdt_addr};'

TQE9>> setenv bootcmd 'run bootcmd_net'

TQE9>>saveenv

2.在pc(ubuntu)上安装设置tftp服务:

1. 安装

$ sudo apt-get install tftp-hpa tftpd-hpa

2. 建立目录

$ mkdir /opt/tftpboot

$ sudo chmod 0777 /opt/tftpboot

$ echo “this is a test tftp file” > /opt/tftpboot/test.txt

$ echo “this is another test tftp file” > ./test1.txt

3. 配置

$ sudo vi /etc/default/tftpd-hpa

# /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/opt/tftpboot"

TFTP_ADDRESS="0.0.0.0:69"

TFTP_OPTIONS="-l -c -s" # 这里是选项,-c是可以上传文件的参数,-s是指定tftpd-hpa服务目录,上面已经指定

4. 重启服务

$ sudo service tftpd-hpa restart

5. 测试

$ tftp 127.0.0.1

tftp>get test.txt

tftp>put test1.txt

tftp>q

miiphy_init():初始化mii_devs链表,该列表中是一系列象征mac控制器,每个miid_dev表示一条mdio总线,可挂载多个phy设备。

phy_init():根据宏定义(例如CONFIG_PHY_REALTEK、CONFIG_PHY_ATHEROS等)初始化相应一个或多个系列网卡,其中就有我们项目中使用的realtek(RTL8211E)系列网卡以及sabresd公版所使用的aheros(AR8031)系列网卡。

phy_env_init():初始化关于phy的一些uboot环境变量,这里我们不需要关心。

board_eth_init():网卡的板级初始化。

3.在pc(ubuntu)上安装设置nfs服务:

1. 安装

$ sudo apt-get install nfs-kernel-server

$ mkdir /opt/nfsroot

2.配置nfs;

$ sudo vi /etc/exports

在文文件的最后一行添加:

/opt/nfsroot *(rw,sync,no_root_squash,no_subtree_check)
3.重启服务

$ sudo service nfs-kernel-server restart

4.挂载测试指令:
$ sudo mount -t nfs 127.0.0.1:/opt/nfsroot /   ./mydir

4.准备kernel:

在Kernel上要做的事情不多,总的来说也就是配置dts和make menuconfig配置内核。

1.准备kernel

$ cd /opt/fsl-yocto-L4.1.15_1.0.0-ga/fsl-release-bsp/

$ source fsl-setup-release.sh -b build-x11

$ bitbake core-image-minimal

$cp tmp/work/imx6qsabresd-poky-linux-gnueabi/linux-imx/4.1.15-r0/Git/*  /opt/fsl-yocto-L4.1.15_1.0.0-ga/limux-4.1.14-e0/ -rfd

$cd /opt/fsl-yocto-L4.1.15_1.0.0-ga/limux-4.1.14-e0/

$cp  arch/arm/boot/dts/imx6q-sabresd.dts arch/arm/boot/dts/imx6q-tqe9.dts

$cp  arch/arm/boot/dts/imx6qdl-sabresd.dtsi    arch/arm/boot/dts/imx6qdl-tqe9.dtsi

$vim arch/arm/boot/dts/imx6q-tqe9.dts

#include “imx6qdl-sabresd.dtsi”

改成

#include “imx6qdl-tqe9.dtsi”

2.修改imx6q-tqe9.dts以适应板子上的串口终端管脚:

把pinctrl_uart1节点改成如下:

pinctrl_uart1:uart1grp {

fsl,pins = <

MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA0x1b0b1

MX6QDL_PAD_SD3_DAT6__UART1_RX_DATA0x1b0b1

>;

};

把pinctrl_usdhc3节点改成如下:

pinctrl_usdhc3: usdhc3grp {

fsl,pins = <

MX6QDL_PAD_SD3_CMD__SD3_CMD0x17059

MX6QDL_PAD_SD3_CLK__SD3_CLK0x17059

MX6QDL_PAD_SD3_DAT0__SD3_DAT00x17059

MX6QDL_PAD_SD3_DAT1__SD3_DAT10x17059

MX6QDL_PAD_SD3_DAT2__SD3_DAT20x17059

MX6QDL_PAD_SD3_DAT3__SD3_DAT30x17059

#if 0

MX6QDL_PAD_SD3_DAT4__SD3_DAT40x17059

MX6QDL_PAD_SD3_DAT5__SD3_DAT50x17059

MX6QDL_PAD_SD3_DAT6__SD3_DAT60x17059

MX6QDL_PAD_SD3_DAT7__SD3_DAT70x17059

#endif

>

};

在pmic节点添加status = “disabled”属性(E9没有pfuze100芯片)

pmic:pfuze100@08 {

compatible = “fsl,pfuze100”;

reg = <0x08>’

status = “disabled”;

...

}

3.配置内核

$ make distclean

官方sabresd的yocto采用的就是KERNEL-DIR/arch/arm/configs/imx_v7_defconfig,这里我们也使用这个配置方案。

$ make imx_v7_defconfig

配置交叉编译工具链

$ make menuconfig

Gerneral setup --->

Cross-compile tool prefix

(/opt/fsl-imx-x11/4.1.15-1.1.0/sysroots/x86_64-pokysdk-linux/usr/bin/arm-poky-linux-gnueabi/arm-poky-linux-gnueabi-)

配置RTL8211E网卡驱动

Device Drivers --->

Network device support --->

PHY Device support and infrastructure --->

<*>Drivers for Realtek PHYs

$ make

$ cp arch/arm/boot/zImage arch/arm/boot/dts/imx6q-tqe9.dtb /opt/tftpboot/

取消掉ATH6KL_SDIO、BCMDHD_SDIO、BCMDHD、BRCMFMAC的驱动选择。

5.准备nfs文件系统

把ycoto中编出来的文件系统直接解压到/opt/nfsroot/下

$ cp /opt/fsl-yocto-L4.1.15_1.0.0-ga/fsl-release-bsp/build-x11/tmp/deploy/images/imx6qsabresd/fsl-image-qt5-imx6qsabresd-20160428090146.rootfs.tar.bz2 /opt/nfsroot/
$ cd  /opt/nfsroot/
$ tar jxvf  fsl-image-qt5-imx6qsabresd-20160428090146.rootfs.tar.bz2
$ rm fsl-image-qt5-imx6qsabresd-20160428090146.rootfs.tar.bz2

6.板子pc连同一局域网,上电启动板子。

现在板子应该已经可以进入linux系统了, mmc就不烧了。
    注意:
    如果启动期间串口终端出现如下错误:

fec 2188000.ethernet eth0: no PHY, assuming direct connection to switch

libphy: PHY fixed-0:00 not found

fec 2188000.ethernet eth0: could not attach to PHY

IP-Config: Failed to open eth0

IP-Config: No network devices available

则在kernel源码目录进行如下操作:
    $ vi drivers/net/phy/phy_device.c +296    作如下修改:
     
     292 static int get_phy_id(struct mii_bus *bus, int addr, u32 *phy_id,

293                       bool is_c45, struct phy_c45_device_ids *c45_ids)

294 {

295         int phy_reg;

296         msleep(1);

297         if (is_c45)

298                 return get_phy_c45_ids(bus, addr, phy_id, c45_ids);

299

300         /* Grab the bits from PHYIR1, and put them in the upper half */

301         phy_reg = mdiobus_read(bus, addr, MII_PHYSID1);

302         if (phy_reg < 0)

303                 return -EIO;

重新编译内核并把镜像拷到/opt/tftpboot/下即可,原因是有可能phy芯片的mdio操作过快致使读不出来phy_id从而不能识别phy,这种情况可能是我的板子idea个性问题也可能是该RTL8211E芯片的共性问题,由于手上只有一块板子无从验证。

天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第四篇 新版kernel(L4.1.15-r)移植相关推荐

  1. 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第三篇 新版uboot(2015.04-r0)网卡移植(RTL8211E)

    经过前面的移植现在板子已经能成功跑起来yocto的2015.04版u-boot,但是如果我们ping主机则会提示不通,这里我们继续把u-boot的网卡移植上去,毕竟之后的内核移植少不了tftp功能. ...

  2. 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第五篇 LCD+触摸屏移植

    经过前面的移植,我们的板子已经可以成功进入linux,但是这个时候看不到画面的,还需要进一步调通LCD显示和触摸屏驱动. 1.uboot环境变量. 为了LCD能显示需要如下设置uboot变量: $se ...

  3. 天嵌TQ_E9卡片电脑移植飞思卡尔yocto L4.1.15_1.0.0_ga 第一篇 yocto项目建立

    本移植过程参考飞思卡尔的Freescale_Yocto_Project_User's_Guide.pdf文档,请自行到飞思卡尔下载fsl-yocto-L4.1.15_1.0.0-ga.zip文件夹. ...

  4. 3g android4 移植 飞思卡尔i.MX 6Quad Android 4.2.2的中兴和Ublox 3G驱动移植 Android——4.2 - 3G移植之路

    点击打开链接 3g android4 移植 点击打开链接 飞思卡尔i.MX 6Quad Android 4.2.2的中兴和Ublox 3G驱动移植 点击打开链接  Android--4.2 - 3G移 ...

  5. 天嵌科技为E9卡片电脑Qt快速入门攻略

    本手册是广州天嵌计算机科技有限公司与Qter开源社区联合出品的入门教程,基于天嵌E9卡片电脑,目的是让E9用户可以快速完成Qt环境搭建并开始Qt嵌入式编程.该教材中使用了最新的Qt 5.4.0版本,基 ...

  6. 飞思卡尔I.MX6Q-QT5的移植

    专栏说明 本专栏针对飞思卡尔I.MX6Q芯片产品开发,主要为视频的采集(V4L2).视频编解码(VPU).视频格式转化(IPU).H264封装为MP4.QT5的移植和显示.         飞思卡尔I ...

  7. 飞思卡尔 I.MX6Q-vpu视频编解码

    专栏说明 本专栏针对飞思卡尔I.MX6Q芯片产品开发,主要为视频的采集(V4L2).视频编解码(VPU).视频格式转化(IPU).H264封装为MP4.QT5的移植和显示.         飞思卡尔I ...

  8. 飞思卡尔I.MX6Q-LTIB安装配置

    专栏说明 本专栏针对飞思卡尔I.MX6Q芯片产品开发,主要为视频的采集(V4L2).视频编解码(VPU).视频格式转化(IPU).H264封装为MP4.QT5的移植和显示.         飞思卡尔I ...

  9. 飞思卡尔 I.MX6Q-高分辨率(1080P)视频采集编码

    专栏说明 本专栏针对飞思卡尔I.MX6Q芯片产品开发,主要为视频的采集(V4L2).视频编解码(VPU).视频格式转化(IPU).H264封装为MP4.QT5的移植和显示.         飞思卡尔I ...

最新文章

  1. 你应该知道的Virtual Studio
  2. mac pdf去水印_今天才知道,Word、PDF文档去水印这么简单!一键水印说拜拜
  3. java/android 做题中整理的碎片小贴士(12)
  4. python编程、abc最大值_Python中abc
  5. display inline-block 垂直居中
  6. XenApp Command Line参数的传递
  7. Python 练习: 简单角色游戏程序
  8. 搭建测试环境_当面试时被问到“搭建过测试环境吗”, 身为小白要怎么回答?...
  9. mysql中的模糊查询(非原创)
  10. 安卓实现局部界面遮罩效果
  11. 阿里云ECS服务器自定义端口无法访问问题记录
  12. codeforces 414C C. Mashmokh and Reverse Operation(归并排序求逆序对)
  13. matlab 不确定度计算器,A类贝塞尔不确定度计算器
  14. openGL编程指南第一章
  15. 电子专业 英语词汇大全(持续更新)
  16. 真正的数字化,是CEO决策的底层逻辑要变了
  17. 在微信小游戏中使用tensorflow的face-landmarks-detection
  18. 面试系列——爱奇艺Andromeda 跨进程通信组件分析
  19. Firefox火狐Flash插件卡死问题完美解决方法
  20. 查漏补缺——字符串www.qq.com所有非空子串

热门文章

  1. Pandas 元素选取
  2. 2022.12.23-Python100day-day05-面向对象编程
  3. PDCP 功能与基本概念
  4. QT-ico图片的生成
  5. 例 9.7 有n个结构体变量,内含学生学号、姓名和3门课程的成绩。要求输出平均成绩最高的学生的信息(包括学号、姓名、3门课程成绩和平均成绩)。
  6. 触控板用不了,解决办法:
  7. java北京招聘_JAVA应届毕业生去北京找工作,薪资大约多少?
  8. sku与spu 概念
  9. win10 suse linux,Windows 10现已支持安装SUSE Linux子系统 附安装教程|蓝点网
  10. 中国最美丽的地方排行榜国家地理