【EVB-335X-II试用体验】 Yocto环境的建立及Rootfs的构建与使用(2)

在前面的文章中,我们已经使用Yocto构建出一个Rootfs,但是因为WatchDog的缘故,启动没有多久就重启了。下面我们来解决这个问题。

WatchDog的Disable
我们既可以在Rootfs启动后定期喂狗,也可以直接在kernel中disable Watchdog,在开发初期我们选择在内核中直接去掉比较快。
内核配置
使用make menuconfig来配置,结果出现了错误:

【EVB-335X-II试用体验】 Yocto环境的建立及Rootfs的构建与使用(2)_第1张图片
这个明显是因为确实Libary的问题,这个缺少的是libreadline,因此安装即可:
sudo apt-get install libreadline5-dev
然后在menuconfig中,我们可以查到Watchdog的位置,因此我们找到disable即可:
【EVB-335X-II试用体验】 Yocto环境的建立及Rootfs的构建与使用(2)_第2张图片

然后重新编译,再次测试发现还是会重启。看起来是uboot中就开启了,然后内核中还是需要去关掉才行,或者直接在uboot中需要关闭。
然后将板子开启到uboot中,停留一会发现确实会自动重启,因此可以确定是uboot中的开启了watchdog。然后查看用户手册,可以看到其Watchdog电路如下:
【EVB-335X-II试用体验】 Yocto环境的建立及Rootfs的构建与使用(2)_第3张图片

因此我们只需要短接J3即可。
如果想在uboot中disable,那么可以将下面几个宏去掉:


然后重新编译烧写即可。
暂时我们就先这样子做,以后我们将会在Yocto中添加代码来对应此问题,对于如何喂狗可以参考官方给的代码,代码位于:
test_code/watchdog/main.c


同时也可以看看TI的官方说明:
http://processors.wiki.ti.com/in ... T_Driver_User_Guide
官方wiki中也有对应的说明以及代码。

内核模块的处理前面我们使用Yocto编译出来了rootfs,但是rootfs中的kernel modules并不能用,因为Yocto里面默认的内核不是我们的内核,因此,我们需要将我们的内核的模块安装到对应的rootfs中。
内核的安装非常容易,只需要make modules_install的时候指定即可。

首先编译modules:
make modules

然后install modules:
make ARCH=arm INSTALL_MOD_PATH=/home/hexiongjun/nfs/evb335xii_mini modules_install


然后可以看到安装后了的kernel modules:【EVB-335X-II试用体验】 Yocto环境的建立及Rootfs的构建与使用(2)_第4张图片


然后再次启动内核既可以使用了。

你可能感兴趣的:(EmbeddedSystem,Yocto项目实践)