i.MX6开发板学习笔记(三篇连载)——转帖
i.MX6开发板学习笔记一 ——Sqlite3数据库移植及测试导读:i.MX6开发板采用了飞思卡尔i.MX6四核处理器,大步迈入嵌入式linux——一款iMX6开发板简单介绍了上手体验。本文将阐述如何在MY-I.MX开发平台上运行最新版sqlite3并简单测试。使用硬件MY-I.MX6 Demo开发平台使用软件linux Mfgtools 串口软件。正文1. 源码下载下载最新的源代码,这里下载的是Sqlite 3.8.5的版本。http://www.sqlite.org/2014/sqlite-autoconf-3080500.tar.gz2. 交叉编译与移植解压:tar –xzf sqlite-autoconf-3080500.tar.gz得到sqlite-autoconf-3080500文件夹。进入文件夹cd sqlite-autoconf-3080500配置文件configuresudo ./configure --host=arm-linuxCC=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-gcc AR=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-ar LD=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-ld STRIP=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-strip RANLIB=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-ranlib CFLAGS="-mfpu=vfp -Os -lpthread -lrt" LDFLAGS=${LDFLAGS} --prefix=/home/bruce/share/work/sqllite/sqlite
--host=arm-linux表示交叉编译,目标代码为arm架构。还需要注意CC、AR等变量,如果不指定则无法完成下面的交叉编译,最后编译出的是x86的Sqlite。另外CC、AR等变量必须为全路径,否则会出现找不到的情况。检验正确与否看下图中checking for arm-linux-gcc,如果后面出现上面设置的交叉编译器则表示成功。--prefix=/home/bruce/share/work/sqllite/sqlite表示make install安装到这个目录中。http://www.eeboard.com/wp-content/uploads/2014/07/image0032-500x317.pngbin 目录下是sqlite的可执行文件sqlite3;include目录下是头文件sqlite3.h sqlite3ext.h,后面的应用程序开发会用到这些头文件;lib 目录下是编译生成的库文件,包括静态库和共享库;share 目录下是Sqlite帮助文档man;使用file命令查看sqlite文件类型等信息。file sqlite3sqlite3: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, not strippedarm-linux-strip用于剥离调试信息,使文件变小。root@ubuntu:~/share/work/sqllite/sqlite/bin# arm-linux-strip sqlite3root@ubuntu:~/share/work/sqllite/sqlite/bin# file sqlite3sqlite3: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, stripped剥离之前为65164bytes:root @ubuntu:~/share/work/sqllite/sqlite/bin$ ls -l-rwxr-xr-x 1 root root 65164 Jun 20 19:13 sqlite3剥离之后为52768,文件小了不少。root@ubuntu:~/share/work/sqllite/sqlite/bin# ls -l-rwxr-xr-x 1 root root 52768 Jun 22 19:56 sqlite3拷贝共享库文件到开发板系统标准库路径 /lib文件夹下。需要创建共享库的软链接# cd /usr/lib# ln -s libsqlite3.so.0.8.6 libsqlite3.so.0# ln -s libsqlite3.so.0.8.6 libsqlite3.so移植ncursessqlite的运行需要ncurses库,因此我们还需要移植ncurses。方法和sqlite的移植差不多。ncurses提供字符终端处理库,包括面板和菜单。1. 下载库源码库文件源码下载地址http://mirror.bjtu.edu.cn/gnu/ncurses/选择最新5.9版本下载得到压缩文件ncurses-5.9.tar.gz将压缩解压,得到目录ncurses-5.92. 编译进入目录ncurses-5.9以下配置与编译参考ncurses源文件中的INSTALL文件。由于编译过程出现关于C++头文件的问题,所以配置时使用配置参数--without-cxx-binding,不对C++部分进行编译(具体说明详见源文件中的INSTALL文件)2.1配置# ./configure --host=arm-linux--prefix=/home/ncurses_cross--with-sharedCC=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-gcc --without-cxx-binding配置选项--host=arm-linux指明程序运行的系统平台,arm-linux配置选项--prefix=/home/ncurses_cross指明编译结果安装路径配置选项--with-shared 指明编译生成共享库文件配置选项--without-cxx-binding不对c++相关文件进行编译配置选项CC=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi--gcc配置交叉编译器路径2.2编译与安装编译# make安装编译得到的文件,安装到配置时指定的路径 /home/ncurses_cross# make install可以查看安装的文件# cd /home/ncurses_cross/# lsbinincludelibmanshare#lib目录下就有我们需要的共享库文件libncurses.so.5.9使用file命令查看文件的类型# file libncurses.so.5.9libncurses.so.5.9: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped处理器类型为ARM3.移植可以将交叉编译后的共享库文件拷贝到ARM开发板系统标准库目录 /lib。
测试sqlite数据库编写测试程序mysqlite.c在宿主机上交叉编译:arm-linux-gcc -L/home/bruce/share/work/sqllite/sqlite/lib -lsqlite3 -o mysqlite3 mysqlite.c编译选项-L/home/bruce/share/work/sqllite/sqlite/lib指明编译使用的库的路径编译选项-lsqlite3指明编译使用的库的名字。拷贝可执行文件到文件系统home/bruce/sqlite文件夹中,然后打包压缩下载到开发板中。下图为在Ubuntu中操作的流程:http://www.eeboard.com/wp-content/uploads/2014/07/image0072-500x334.png查看myfile文件,发现建立数据库成功。http://www.eeboard.com/wp-content/uploads/2014/07/image0092-500x396.png测试代码:src相关文章:大步迈入嵌入式linux——一款iMX6开发板i.MX6开发板学习笔记二——构建linux根文件系统ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ作者 bruce helen
原文地址:http://www.eeboard.com/tutorials/my-i-mx6_sqlite3_test/
i.MX6开发板学习笔记二——构建linux根文件系统
使用硬件
MY-I.MX6 Demo开发平台
使用软件
linux Mfgtools 串口软件。
正文
飞思卡尔的ltib工具一条命令就可以编译出u-boot、kernel和文件系统,非常方便。但是ltib编译出的文件系统有许多我们不需要的东西,也为了更加深入了解linux根文件系统的组成,这里我们使用最新的busybox自己构建一个linux根文件系统。
根目录介绍
首先,大概了解一下linux根文件系统的目录:
1. /bin目录
/bin目录包含了引导启动所需的命令或者普通用户可能用的命令。这些命令都是二进制文件的可执行程序,多是系统中重要的系统文件。这些命令在挂接其他文件系统之前就可以使用。/bin目录下常用的命令有:cat、chmod、ls、cp、mount、mkdir等等。
2. /sbin目录
/sbin目录类似/bin,也用于存储二进制文件。大部分文件多是系统管理员使用的基本系统程序。常用命令有:shutdown、reboot、fdisk等等。
3. /etc目录
/etc目录存放着各种系统配置文件,包含系统初始化文件/etc/rc等。
4. /dev目录
/dev目录存放了设备文件,即设备驱动程序,用户通过这些文件访问设备。
5. /lib目录
/lib目录是根文件系统上程序所需的共享库,存放了根文件系统程序运行所需的共享文件。这些文件包含了可被许多程序共享的代码,以避免每个程序都包含相同的子程序副本。
6. /usr目录
/usr是个很重要的目录,通常这一文件系统很大,因为所有程序安装在这里。
7. /proc目录
/proc文件系统是一个虚拟的文件系统,它并不存在于某个磁盘上,而是由内核产生,存储在内存中。这个目录提供关于系统的信息。
8. /home目录
用户目录
9. /var目录
/var目录包含系统一般运行时要改变的数据。
10. /root目录
/root目录是超级用户的目录。
11. /mnt目录
/mnt目录是系统管理员临时安装(mount)文件系统的安装点。
12. /tmp目录
/tmp目录存放程序在运行时产生的信息和数据。
移植最新稳定版busybox 1.22.1
busybox可以将许多常用Unix命令结合到一个单独的可执行程序中,因此,常常被形象的比喻为嵌入式系统中的“瑞士军刀”。
从http://www.busybox.net/下载最新源码,这里使用的是:
20 January 2014 -- BusyBox 1.22.1 (stable)
下载地址:http://busybox.net/downloads/busybox-1.22.1.tar.bz2
新建一个目录busybox,这里路径为:/home/bruce/share/work/busybox
将上面下载的文件复制到busybox目录中。
解压源文件:
tar –jxf busybox-1.22.1.tar.bz2
解压完成,这时会在这个目录下会生成一个新目录busybox-1.22.1
进入这个目录:
cd busybox-1.22.1 进入目录busybox-1.22.1
busybox-1.22.1目录中包含的文件较多,我们只需要修改Makefile进行交叉编译即可生成busybox应用程序。
配置Busybox
修改busybox-1.22.1目录下的Makefile文件,将CROSS_COMPLIE和ARCH修改为交叉编译器所在路径和arm。在这里改为:
CROSS_COMPILE ?=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-
ARCH ?= arm
执行make menuconfig,出现如下配置界面 配置界面
这里需要关注的是Linux Module Utilitiesà Linux Module Utilities
去掉Simplified modutils选项,选择下面的insmod、rmmod、lsmod等。这几个命令我们后面开发驱动程序会经常用到,所有需要加上。
Exit退出,Yes保存配置。
保存配置
回到命令行,输入make即可编译。几分钟后即可完成编译。
编译文件安装到_install目录
输入make install将busybox编译生成的相关文件安装到_install目录下。
在_install目录下会生成如下目录和linuxrc文件。
bin linuxrc sbin usr 回到命令行输入make编译
为了方便,这里我们直接拷贝飞思卡尔文件系统下的lib目录和etc目录。其他的手工建立即可。
目录复制
将建立好的目录放到/home/bruce/share/work/fs/rootfs文件夹下。最后将这些文件打包,使用Mfgtools下载即可。
为了方便这里写了简单的脚本makefs,方便使用。注意脚本需要+x权限。
chmod +x makefs 脚本makefs
好了,执行脚本./makefs,生成rootfs.tar.bz2文件。将这个rootfs.tar.bz2文件放到Mfgtoos下载目录下。
上电启动效果图上电启动效果图
至此根文件系统构建完成。
大步迈入嵌入式linux——一款iMX6开发板
i.MX6开发板学习笔记一——Sqlite3数据库移植及测试
ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
作者 bruce helen
原文地址:http://www.eeboard.com/tutorials/my-i-mx6_-build_linux/ i.MX6开发板学习笔记三——MySql-5.1移植及测试
硬件
MY-I.MX6 Demo开发平台
软件
linux Mfgtools 串口软件
1. 源码下载
下载MySQL最新5.1版本的源代码,这里下载的是mysql-5.1.73.tar.gz版本。
http://www.mirrorservice.org/sites/ftp.mysql.com/Downloads/MySQL-5.1/源码下载
2. 交叉编译与移植
网上有一份比较详细的mysql-5.1.51版本的MySQL数据库移植手册《Ubuntu下编译ARM平台QtEmbedded的MySQL和MySQL插件.pdf》,5.1.73变化不大,完全可以参考这份文档进行移植。里面的内容都是正确的,但有几个地方不一样:
1)/bin/bash: line 1: ../scripts/comp_sql: cannot execute binary file
在文档中comp_sql没有提到,这里只需要进入这个目录下使用gcc命令重新编译一个x86的版本就可以了:
gcc -o comp_sql comp_sql.c
2)后面还有一个程序comp_err,直接从x86编译的目录下拷贝过来就可以了。注意可执行文件生成的时间。
3)make install注意
直接make install提示错误,sudo make install还是错误。需要先sudo -s,使用root用户make install就不会有错误了。
这里使用的配置命令为:
./configure --host=arm-linux --enable-static
--with-named-curses-libs=/usr/local/arm/ncurse/lib/libncurses.a
--prefix=/usr/local/arm/mysql --without-debug --without-docs
--without-man
--without-bench
--with-charset=gb2312
--with-extra-charsets=ascii,latin1,utf8
make install命令会将程序安装到/usr/local/arm/mysql目录下,将这个目录拷贝到i.MX6开发板中,注意:开发板目录必须和这里的目录完全一致。
3. 使用MySQL数据库
进入开发板MySQL数据库bin目录:
cd /usr/local/arm/mysql/bin/
执行安装命令
./mysql_install_db --user=root
会有warning产生,只需要在/etc/hosts文件中加入用户名即可,这里加入viny用户名。加入viny用户名
重新执行命令这条warning即可去除。还有两个Warning是参数更新的,这里没有影响。Warning参数更新
将MySQL自带的默认配置文件拷贝到etc目录下:
cp /usr/local/arm/mysql/share/mysql/my-large.cnf /etc/my.cnf
cp /usr/local/arm/mysql/share/mysql/mysql.server /etc/mysql.server
查看当前MySQL运行状态:
/etc/mysql.server status
启动MySQL数据库
/etc/mysql.server start启动MySQL数据库
错误解决:
1)第一次运行可能会有如下错误:
root@viny /etc$ ./mysql.server start
Starting MySQL. ERROR! Manager of pid-file quit without updating file.
解决方法:第一次运行需要安装一下数据库的数据文件保存路径
./mysql_install_db --user=root --datadir=/usr/local/arm/mysql/var
2)相关文件读写权限问题
/usr/local/arm/mysql/libexec/mysqld: Can't find file: './mysql/plugin.frm' (errno: 13)
将这个目录mysql文件夹权限改为666就可以了。
给MySQL增加密码
./mysqladmin -u root password 123456
注意:以上设置已经放到我们主机上的根文件系统了,以后下载后这些内容都存在文件系统中,无需每次手动设置。
进入数据库测试
./mysql -u root –p
然后输入密码即可进入数据库命令行操作界面。进入数据库命令行操作界面
上面我们使用了show databases;查看当前系统中安装的数据库
使用use company;命令选择相应的数据库。
其他命令可参看MySQL的说明文档。
4. 远程连接数据库
在windows电脑上使用navicat软件来远程连接i.MX6开发板中运行的MySQL数据库。
第一次连接时会出一个1130的错误:
ERROR 1130: Host '192.168.1.189' is not allowed to connect to thisMySQL server
解决方法:
进入数据库命令行,设置root用户任何IP地址都可以访问:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRA NT OPTION;
flush privileges;
这样就可以远程操作MySQL数据库了。
5. C语言测试例程
简单测试了在C语言中调用mysql提供的API,进行数据库连接、读取、关闭功能。
源文件:mysql_test.c
编译方法:
arm-linux-gcc -o arm_mysql_test mysql_test.c -I/usr/local/arm/mysql/include/mysql -L/usr/local/arm/mysql/lib/mysql -lmysqlclient
编译成功,会在当前目录下生产arm_mysql_test可执行文件,将此文件使用rz命令传送到开发板中即可进行测试。
注意:测试之前MySQL数据库必须在开发板中运行,否则程序连接不上数据库。
测试截图:测试截图
ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ
作者 bruce helen
原文地址:http://www.eeboard.com/tutorials/i-mx6%E5%BC%80%E5%8F%91%E6%9D%BF%E5%AD%A6%E4%B9%A0%E7%AC%94%E8%AE%B0%E4%B8%89-mysql-5-1%E7%A7%BB%E6%A4%8D%E5%8F%8A%E6%B5%8B%E8%AF%95/ 写的好详细啊 赞一个 好东西呀,跟着一起学习学习! 赞赞赞赞,学习了 辛苦啦, 好多 sunnyqd 发表于 2014-8-28 13:23
好多
写得比较详细,总共3篇 楼主辛苦了,资料很详细 楼主这是到处找飞思卡尔相关的东西啊 原文作者的ID我怎么在本板块经常看到呢?
谢谢了 高大山啊 我们公司打算用imx6的 后来没搞成功 放弃了 mark LZ强大很多资料啊 感谢楼主分享原创资料啊,赞~~ 收藏了,以后有时间学学 好贴子,虽然有板子了还没在LINUX下开发 这个论坛现在太火了~~~
打算学学 ARM9
页:
[1]