结合Yocto Qemu与Eclipse单步调试开发Linux Kernel

使用说明 在以前的博客中说明过使用Qemu + BuildRoot来构建一个虚拟的嵌入式开发平台, 还写过使用Yocto + Qemu来构建一个Cortex-A9的嵌入式开发调试平台. 同时在很久以前也写过使用Eclipse + JLINK来调试ARM9. 而在工作学习中,有时候, 对内核源码的研究中, 需要单步对linux内核跟踪调试, 且大部分是关注与内核中某些组件的实现, 例如MM, Binder驱动, 这个时候直接使用Qemu + Eclipse来调试与开发就比使用硬件方便快捷得多了. 那么这篇文章中将使用:

Continue reading »

amlogic S905X udpate imge的压缩和解压

使用的板子是khadas VIM amlogic的升级和烧写有多种方式, 常见的是USB烧写和SD卡烧写. USB烧写的流程其实是解压update.img中的文件,然后push到RAM中运行. 然后再push文件到ram中烧写. 这个和Freescale的MFGTools类似. update.img的生成 生成update.img的命令如下,可以看到不同文件在update.img中被包含, 中括号里面是文件名字和分区名字, 这个信息在后面的解压中会被用到.

  Update.img的解压 参考下面这个地址中的.c文件 http://freaktab.com/forum/tv-player-support/amlogic-based-tv-players/s912/others-aml-s912/knowledge-tutorials-av/608116-how-to-recover-so-you-bricked-your-box 因为他的这个是为S912S为处理的, 对于S905X而言也是类似的, 同时因为他默认指定了一个打开的文件, 因此我改了一下:

Continue reading »

OpenWRT中使用无线网卡做中继器与AP热点

中继器与AP的实现 这里我们假定中继器完成下面这样的一个功能: Wired Network —> Wireless Network —> 上级无线路由器 即从外部插入一个网线,通过imx6UL上面的无线网卡将数据转发到上级的路由器上面, 当然也可以完成下面这样的传送: Wireless Network(AP mode) –> Wireless Network(Client) –> 上级无线路由器 即设立一个AP热点,相当于一个路由器,然后再将这个AP的数据通过另外一个无线网卡转发到上一级的路由器或者WLAN上面。

Continue reading »

OpenWRT中使用mpd作为音频Server及其使用

说明 MPD可以播放音乐与streaming Radio,可以用于娱乐用。其官网的说法为:

即MPD是CS架构的Daemon端。 接下来我们将在iMX6UL上面使用MPD, 并在手机与Ubuntu等上面使用其Client来控制与播放音乐。 ALSA验证声卡发声 要完成音乐的播放,首先iMX6UL需要可以播放声音。 iMX6UL使用的Codec是WM8960, 这个和TQE9使用的是一样的。 在播放之前,我们先查看声卡是哪个:

首先需要确定ALSA识别了哪些声卡,然后再确定声卡的设备Index, 例如这里面WM8960不是Card0,所以如果直接默认使用aplay来播放,那么就会出错。 当然启动的时候也有:

确定设备Index后,我们需要一个WAV文件来播放。 直接使用MP3来convert一个: 然后我们使用wavinfo查看一下wav文件的属性:

Continue reading »

OpenWRT添加无线USB网卡

说明 要完成网线网卡的驱动需要在内核中添加驱动,同时还需要将固件放入rootfs中正确的位置,如果需要固件的话。 内核驱动添加 因为内核中对常规的USB网卡均支持,所以直接添加即可, 例如下面是对9170的支持: Firmware添加 在menuconfig中直接添加: 启动确认 启动后,我们需要等待rootfs完成后再插入, 这样子可以比较容易看到log, 对于TPLink的其中一款,对应的log如下:

从log看,加载了对应的固件。配置country code。这个FW位于:

因为这个网卡具备WPS功能,有一个按键,所以有一个input设备。 对于另外一个USB网卡:

  然后就可以看到对应的网卡设备了:

Continue reading »

【IMX6UL开发板试用体验】OpenWRT有线网络的配置

在前面编译完成后,就可以烧写测试启动了。 但是启动后发现了一些问题。本次我们说明一下如何使用OpenWrt中的wired LAN。 网卡驱动问题 本身板子有两个网口,其中一个没有变压器转换器,另外一个在Uboot中使用是没有问题的,可以正常的tftp下载kernel与dtb,但是在Linux,OpenWRT启动后,如果配置网络IP地址就会出现不停的up与down的情况 udhcpc (v1.20.2) started fec 2188000.ethernet eth0: Freescale FEC PHY driver [Generic PHY] (mii_bus:phy_addr=2188000.ethernet:00, irq=-1) IPv6:

Continue reading »

【IMX6UL开发板试用体验】OpenWRT在iMX6UL上面的移植与编译

选择 OpenWRT在最近的时期分裂出了LEDE出来,因此这就涉及到了这两个的选择。 前段时间,编译过LEDE用于树莓派3,于是想着直接使用以前的LEDE,这样子省去了下载,毕竟在国内下载很多source code可能需要很长的时间,如果没有proxy的话。于是想着省些事情就用起来了以前的LEDE来编译,但是编译过程中出现了很多错误, 因此最终我决定切回到OpenWRT,并且使用master上面新的代码来移植编译。 代码仓库: https://github.com/tonyho/OpenWRT_iMX6UL OpenWRT配置 本身LEDE与OpenWRT里面已经有一个imx6 Cortex-A9的arch支持,因此直接选择这个为base来做Porting与Compile较为合适。配置如下: Compile Tuning 因为imx6ul是Cortex-A7,所以我们需要更改一下 选择好Target之后,我们需要做移植工作。 Target移植 内核移植 移植需要将内核更改一把,这个位于: $ ls target/linux/imx6/ base-files

Continue reading »

【IMX6UL开发板试用体验】上手试用与资源使用

缘起 这个是我拿到的第二块工控板了,前面是AM335X的板子。这块板子也是工业板。相比一些“开发板”而言还是有一些区别的。 硬件 和以前的AM335X板子一样,做工和用料比较扎实,该有的都有,连插针都是镀金的。让人非常放心的感觉。不愧是工业板。 快递的包装也很好,Top与Bottom都有一层泡沫,板子都有静电膜保护。 外设的配件也齐全,尤其是电源绝非普通的10多块钱的廉价货色,下面是一些图片 包装: 因为iMX6UL支持8个串口,因此厂家直接发了两个串口接头,Good,网线什么的都有了,无需自己再去找 Debug串口线与电源 下面这个是开机后的显示,自带的Qt example 看控件样子可以猜到是Qt4而不是Qt5,当然对于工业控制Qt4有着很深的现存基础。 软件资源 硬件不错,看看软件。软件主要分为: 1. binary image + Rootfs,因为板子有多种启动与Storage形式,因此有用在nand上的UBI的。 2.

Continue reading »

DBus入门实践(1): 基本概念

基本概念 可以参考下面链接.或者是官方的教程.  1. linux,dbus示例 Knowing some basic things by example, 推荐: http://laokaddk.blog.51cto.com/368606/943133         http://laokaddk.blog.51cto.com/368606/943148/   2. Documents Reference    D-Bus Specification

Continue reading »

树莓派3的调试串口问题的不完美解决:让蓝牙与调试共存

问题 因为RaspberryPi3的BT与Debug串口共用,导致同一时间只能有一个可以使用,尽管也可以使用软的UART1来控制BT,但是这样子的话需要将CPU的频率固定.  而我们在实际开发中,在mount rootfs之前. 是需要用debug串口来查看kernel启动情况,是否有mount rootfs 解决方案 发现可以使用下面这两种方式来解决 USB UART console Network console 但是最终觉得还是使用USB UART console比较方便. 代价是需要买两根USB转串口线. 使用方法 硬件 直接将两根USB

Continue reading »