标签 linux 下的文章

MYS-SAM9X35开发板烧写Linux系统

手上有一块MYS-SAM9X35单板开发板,芯片是ATMEL AT91SAM9X35。下面是烧写的步骤。

MYS-SAM9X35板上有5个跳线,功能如下:

  • JP1, connect = Force power. disconnect = Normal
  • JP2, connect = Enable CAN RX, disable DEBUG serial. disconnect = Enable DEBUG serial, disable CAN RX
  • JP3, connect = Enable NAND Flash. disconnect = Disable NAND Flash
  • JP4, connect = Enable SPI Flash. disconnect = Disable SPI Flash
  • JP6, connect = Enable DEBUG serial. disconnect = Disable DEBUG serial

有两个按键,功能如下:

  • K1 = Reset
  • K2 = Wakeup

烧写步骤

  1. 连接JP6, 断开JP3, JP4, JP2
  2. 使用USB线连接PC和开发板的USB MINI接口(J12)
  3. 打开串口,上电后可以看到"RomBoot"的字符
  4. 打开SAM-BA软件,选择对应串口开发板
  5. 连接JP3,JP4。执行TCL烧写脚本
  6. 烧写过程中,可以看到串口有SAM-BA操作的输出信息
  7. 烧写结束后,按下K1复位

MYS-SAM9X35开发板的调试串口在J13扩展座上,官方有一个转接小板,转接板上的JP14, JP15的Pin1, Pin2短接。

Yocto历史

之前以为Yocto是一开始就为了达成方便定制成嵌入式Linux发行版系统。所以查了一些资料,整理下来。

2001年,日本夏普(Sharp)公司开发的PDA设备,SL-5500,又名为Zaurus。运行是的Lineo公司的的嵌入式Embedix Linux(kernel 4.2x)系统,GUI使用Qtopia。Sharp当年开发了一系列的PDA产品,不亚于今天的各种国产Android手机。SL系列前面还有PI,ZR,MI系列。由于MI系列在日本销售不错,就打算把产品向全世界发销。到了SL这一个系列,打算向USA和Europe销售。但是之前一直没有支持其他语言的支持。所以SL-5000D是第一款技搭载Linux系列的产品。当时的SL-5000的大概配置如下:

  • CPU: Intel StrongARM, 206Mhz
  • SDRAM: 32MByte
  • Display: 3.5inch TFT, 240x320pixel
  • Storage Support: MMC Card, CF Card

当年这个硬件资源跑Linux和Qtopia也算比较厉害了。

正如现在的Android刷机潮流一样。SL-5000出来后,也有爱好者去刷机改系统之类的行为。这时候有了一个开源项目,OpenZaurus项目。OpenZaurus是一个替代Sharp Zaurus PDA设备的嵌入式操作系统,项目刚开始只是重新打包SharpROM镜像。后期,OpenZaurus基于Debian从源代码构建系统镜像。类似的项目还有,为iPAQ设备的Familiar系统。

2004年,OpenZaurus合并到Bitbake和OpenEmbedded metadata。

References:

http://tuxmobil.org/pda_linux_sharp_sl5000.html

http://www.linuxjournal.com/article/7866

http://www.linuxdevcenter.com/pub/a/linux/2002/05/23/zaurus.html

Drone CI编译kernel出现multiple target patterns错误

Tags: linux,drone

使用Drone 0.7版本的构建Linux代码时,出现以下错误:

make distclean
Makefile:114: *** multiple target patterns.  Stop.

测试查找原因后,才知道是由于目录层级太深出现的错误。向Drone的社群询问后,得知可以使用Drone的workspace功能来解决问题。workspace就是定义repo的工作目录。这是可以指定新的路径,这样就可以编译Linux代码了。

workspace:
    path: /dronebuild

这样写了后,在container中运行的路行就是/drone/dronebuild目录了。

嵌入式Linux升级方法

SWUpdate 一种单/双镜像的模块化升级框架,支持镜像签名、可以使用 Kconfig 来进行配置、能够处理本地或者远程升级等。支持整合到Yocto中。
source

Mender 则是以OTA进行升级位目标的升级方案。它是用 Go 编程语言编写的双镜像升级框架。
source

OSTree 是此次增量原子升级方案演示中最有名气的,它类似于 Git。Fedora 和 RedHat 都有它的身影,甚至 Gnome 的 Flatpak 容器系统也使用了 OSTree。
source

Swupd 是最后展示的一个升级系统,是由 Intel 的 Clear Linux 发行版率先使用的升级方案。
source

Thinkpad E550 webcam问题

公司配的E550的这个本本安装Linux后也是一堆问题,之前是bluetooth和wifi有冲突。现在发现上面的webcam用不了,网上一找,原来是老问题了:

Bus 001 Device 006: ID 5986:055a Acer, Inc 

用lsusb命令查到的这个Acer就是webcam设备,是usb设备的,但uvcvideo没有识别到。

mkdir -p ~/debian/src
cd ~/debian/src
wget -O webcam.patch https://launchpadlibrarian.net/229627414/0001-uvcvideo-Acer-Integrated-Camera-5986-055a-add-UVC_QU.patch
apt-get source linux-image-$(uname -r)
cd linux-*
patch -p1 < ../webcam.patch
make modules

编译后替换uvcvideo.ko文件即可,但在modprobe时会出现如下提示

modprobe: ERROR: could not insert 'uvcvideo': Exec format error

可以使用-if参数。

参考链接:

https://github.com/merwan/merwan.github.io/blob/eaa50034345b765ce59113eba4cd1e50f13af72f/_posts/2016-05-12-how-to-make-Lenovo-L450-webcam-work-with-Debian.md

Linux下编译MQX的RTCS例程

Tags: linux,mqx

在RTCS中有四个例程,本次编译"httpsrv"例程。

首先进入例程的编译目录:

cd rtcs/examples/httpsrv/build/make/httpsrv_twrk60n512
./build_gcc_arm.sh

编译成功后,会显示“Build done"。同时,在build_arm目录下有相应的elf二进制文件,烧写到芯片即可。

我这里编译时出现libgcc.a库无法找到,仔细查看编译过程发现,里面的库路径是"gcc-arm-none-eabi-48-2014q3/lib/gcc/arm-none-eabi/4.8.3/armv7e-m/libgcc.a",而我下载的GCC中的路径已已经是4.8.4了。所以需要修改tools目录下的gccarm.mk文件:

vi tools/gcc_arm.mk

搜索ligcc.a的地方,把路径修改正确后,重新编译就可以得到elf文件了。

Linux下命令行编译MQX

Tags: linux,mqx

最近,公司开始搞新项目,需求使用一个RTOS,基本上就指定是Freescale家的MQX了。为了理解方便,先在linux下用手工的方式编译下。

编译前要先下载好GCC的工具链

gcc-arm-none-eabi-4_8-2014q3-20140805-linux.tar.bz2

然后编写一个sh文件来加载相关的环境变量。

解压MQX的源码文件,然后进入源码根目录下。首先要修改一个文件,以便可以使用工具链来编译整个系统:

build/common/make/global.mak

里面有TOOLCHAIN_ROOTDIR的变量,修改为工具链的路径即可。

因为MQX支持多个目标板,我这里以twrk60n512为例:

cd build/twrk60n512/make
./build_gcc_arm.sh

这样就可以编译MQX的所有Componments,编译完成后,会在lib/twrk60n512.gcc_arm/release下的各个componment目录下有相关的头文件和*.a的静态库文件。我在编译过程中,遇到两个小问题,解决如下:

1.缗译时出现creating command not found.

解决:这是由global.mk文件的最后那个PRINT引起的,把echo前的@删除即可。

2.编译时出现“stdbool.h”无法找到的问题

解决:stdbool.h文件在工具链的两个地方有出现,既然GCC无法找到,就手动将目录加到环境变量中:

C_INCLUE_PATH=/home/blackrose/freescale-mqx/gcc-arm-none-eabi-4_8-2014q3/lib/gcc/arm-none-eabi/4.8.4/include:${C_INCLUDE_PATH}

3.编译RTCS时,出现无法找到limits.h文件

解决:添加limits.h文件所在的目录到CINCLUDEPATH

export C_INCLUDE_PATH=gcc-arm-none-eabi-4_8-2014q3/lib/gcc/arm-none-eabi/4.8.4/include-fixed:$C_INCLUDE_PATH

最新文章

最近回复

  • Blackrose: 感谢拍砖!嗯,那句话...
  • aa: “Raspberry...
  • Blackrose: 外部只是帮你把芯片启...
  • : 内部时钟比外部的频率...
  • Blackrose: 你这评论比正文更有内容么
  • 7hao: CR+LF ...
  • Blackrose: 可以是你更新软件源后...
  • sxk: 博主,我的系统是ub...
  • Blackrose: 你深得精髓么
  • qihao: 这篇文章的简单总结就...

分类

归档

其它