cn_x 发表于 2014-8-28 09:29:40

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配置文件configure

sudo ./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/

cn_x 发表于 2014-8-28 09:30:33

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/

cn_x 发表于 2014-8-28 09:31:49

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/

qs6361036 发表于 2014-8-28 09:42:28

写的好详细啊    赞一个

huangzzjy22 发表于 2014-8-28 09:43:43

好东西呀,跟着一起学习学习!

pcbddd 发表于 2014-8-28 09:55:07

赞赞赞赞,学习了

qinshiysb 发表于 2014-8-28 11:00:00

辛苦啦,

sunnyqd 发表于 2014-8-28 13:23:55

好多   

cn_x 发表于 2014-8-28 13:29:05

sunnyqd 发表于 2014-8-28 13:23
好多

写得比较详细,总共3篇

wxfje 发表于 2014-8-28 20:27:19

楼主辛苦了,资料很详细

lzl000 发表于 2014-8-28 20:36:40

楼主这是到处找飞思卡尔相关的东西啊

abszy 发表于 2014-8-29 14:00:29

原文作者的ID我怎么在本板块经常看到呢?

谢谢了

dengterry 发表于 2014-8-29 21:00:02

高大山啊 我们公司打算用imx6的 后来没搞成功 放弃了

rockyyangyang 发表于 2014-9-4 16:16:50

mark   LZ强大很多资料啊      

FSL_TICS_Rita 发表于 2014-9-4 16:27:58

感谢楼主分享原创资料啊,赞~~

霸气侧漏 发表于 2014-9-4 16:41:51

收藏了,以后有时间学学

webwiner 发表于 2014-9-4 17:17:37

好贴子,虽然有板子了还没在LINUX下开发

songjie 发表于 2014-9-4 17:22:02

这个论坛现在太火了~~~

打算学学 ARM9
页: [1]
查看完整版本: i.MX6开发板学习笔记(三篇连载)——转帖