智龙开发板搭建llsp环境
智龙开发板搭建llsp(linux+lighttpd+sqlite3+php)环境
1. 准备
1. 智龙开发板V3
2. 软件编译环境:VirtualBox6+CentOS6.10-i386.minimal
3. 交叉编译器: gcc-4.3-ls232.tar.gz
4. 串口交互环境:Fedora29 minicom
5. 文件传输工具:tftp
配置 | 参数 |
---|---|
CPU | 龙芯1C300B |
内存 | 32M内存 |
NandFlash | 128M |
说明: 安装前请确保电脑中存在gcc/g++编译器,否则编译过程中会报错,执行yum install gcc gcc-c++ -y
进行安装。
2. 串口连接开发板
操作机器为Fedora29,自带usb转串口硬件调试工具 minicom ,若没有安装,可以使用
sudo dnf install minicom
进行安装。
操作步骤
1. 按照说明书,连接好TTL三针接口,将USB端插入电脑
从左到右 白-绿-黑 线,插入开发板电源口对面的只有三个针头的接口上。
2. 操作机器上确定设备名
USB插入电脑后,我们需要确定开发板的设备名称,好对这个设备进行操作
在终端下输入 ll /dev/tty*
用以查看所有终端设备,可知 ttyUSB0为我们的开发板设备名
3. 操作机器上输入 sudo minicom -s
配置minicom
得知设备名后,我们需要配置minicom,配置过程如下
输入 sudo minicom -s
进入minicom配置下,选择第三项 Serial port setup
直接按字母可对选项进行操作,按下字母A,修改 Serial Device 的值为开发板的设备名,按下F,G,将软流控(Software Flow Control)和硬流控(Hardware Flow Control)设为No。配置如下:
配置完后,选择 Save setup as dfl 保存配置为默认。再Exit退出。
4. 利用minicom进入开发板系统,操作开发板
在选择Exit退出后,会来到此界面,按下 ctrl+c 即可进入开发板的系统。
5. 连接网线,指定IP地址
在连接好网线后,使用如下命令,手动指定网络IP地址,否则无法上网。
ifconfig eth0 IP-address
譬如我所在的网络段是 192.168.0.X,我可以为我的开发板指定IP地址为 192.168.0.111.只要IP地址不冲突就行。
ifconfig eth0 192.168.0.111
2. 配置编译环境
下载孙冬梅老师提供的gcc编译器,点击下载。下载后,将其上传CentOS服务器,并配置环境变量。
PS: 不会安装CentOS6的 看这里
操作步骤
1. 配置GCC环境变量
我们的CentOS主机IP地址为 192.168.0.104,在我们的本机上使用scp命令来上传我们下载下来的GCC文件。
scp gcc-4.3-ls232.tar.gz root@192.168.0.104:/root
表示上传当前目录下的 gcc-4.3-ls232.tar.gz 文件到远端的 192.168.0.104 机器上,使用的是远端的root用户的权限来上传,上传的位置是远端的/root目录下。
在服务端,将我们上传的文件解压缩,到/usr/local 下
tar zvxf gcc-4.3-ls232.tar.gz -C /usr/local
配置环境变量 .bashrc 文件
vi ~/.bashrc
在文件末尾添加上
export PATH=$PATH:/usr/local/gcc-4.3-ls232/bin
使用 source 命令,让配置生效
source ~/.bashrc
在终端下输入 mipsel-linux-gcc -v 出现如下提示则配置成功
2. 安装tftp服务
tftp服务用于将编译好的软件发送给开发板。安装后需要关闭防火墙,或者放行tftp服务端口69,否则会导致文件无法传送。tftp配置教程
安装tftp-server服务
yum install tftp-server
配置tftp,修改文件 /etc/xinetd.d/tftp ,将其中的disable=yes改为disable=no,将server_args 参数改为 -s /tftp -c 其中的 /tftp表示tftp服务的共享目录,可以自定义,需要确保 /tftp 存在。
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftp -c //根目录下建立 tftp 文件夹
disable = no //改为no
per_source = 11
cps = 100 2
flags = IPv4
}
启动服务
/etc/init.d/xinetd start
查看tftp服务是否启动成功,执行如下命令,输出不为空则表示启动成功
netstat -a | grep tftp
关闭防火墙
/etc/init.d/iptables stop
setenforce 0
3. 编译软件
在整个过程中,我们需要用到的包清单如下
- sqlite-autoconf-3260000 下载sqlite3
- Lighttpd1.4.53 下载lighttpd
- PHP5.6.40 下载PHP
编译SQLite3
解压sqlite-autoconf-3260000.tar.gz(到发表该文截至的最新版本),并进入文件夹后执行
1. 选定编译特性,检查编译环境
./configure --host=mipsel-linux --prefix=/usr/local/sqlite3
2. 编译安装
make && make install
说明: --host 指定软件运行环境 --prefix指定源码交叉编译后生成文件的路径. 可以参考这篇文章
编译Lighttpd
解压lighttpd-1.4.53.tar.gz(到发表该文截至的最新版本),进入文件夹后执行
1. 配置交叉编译的环境变量
CC=mipsel-linux-gcc AR=mipsel-linux-ar LD=mipsel-linux-ld RANLIB=mipsel-linux-ranlib STRIP=mipsel-linux-strip
2. 编检lighttpd
./configure --prefix=/usr/local/lighttpd --host=mipsel-linux --build=i686-pc-linux --disable-FEATURE --enable-shared --disable-static --disable-lfs --disable-ipv6 --without-PACKAGE --without-valgrind --without-openssl --without-kerberos5 --without-pcre --without-zlib --without-bzip2 --without-lua
3. 编译安装
make && make install
说明: 可以参考这篇文章
编译PHP
编译安装PHP之前,执行下面的命令,将依赖的包安装。
yum install sqlite-devel libxml2 libxml2-devel
按步骤执行下面的命令
# 指定编译器,前面已经设置了,这里可以不用再次指定
CC=mipsel-linux-gcc
./configure --host=mipsel-linux --prefix=/usr/local/php --disable-all --enable-pdo --with-sqlite3=/usr/local/sqlite3 --with-pdo-sqlite=shared --without-iconv --without-zlib --with-libxml-dir=/usr/local/libxml2 --enable-sockets --with-config-file-path=/usr/local/php/lib --enable-mbstring --with-libxml-dir --enable-json
make && make install
提示: 开发板存储空间有限,文件过大时,使用 mipsel-linux-strip binary-file-name
精简命令。详见博客
4. 打包上传至开发板
我们编译好的文件全部都在 /usr/local 目录下,我们将他们打包成一个文件,并将其移动到我们tftp服务的共享目录 /tftp
tar cvzf source.tar.gz /usr/local/php /usr/local/sqlite3 /usr/local/lighttpd
mv source.tar.gz /tftp
在开启了tftp-server后,确保服务端的防火墙关闭。执行如下命令,即可从tftp-server指定的目录下,下载指定的文件
在开发板中,使用如下命令,下载文件
tftp -g -r filename tftp-server的IP地址
譬如从tftp服务端获取旗下的php.tar.gz文件,服务端的ip为192.168.0.104
tftp -g -r php.tar.gz 192.168.0.104
说明: 理论上,编译过后的包是可以在智龙开发板上通用的,我已将其打包上传,供大家测试。点击 这里下载;打包之前, 记得将php.ini文件拷贝到php/lib下面,将lighttpd源码包中的doc/config下的文件也拷贝到lighttpd/config下。
5. 环境配置工作
好啦,包都已经下载完毕。我们将包解开,按照习惯,将内容移动到 /usr/local 下,后将二进制文件链接到 /usr/bin 下,so库文件链接到 /lib 下。若空间有限,最好分包上传后在逐个配置。
1. 配置SQLite3
解压文件后,我们的sqlite存在于 /usr/local/sqlite3 下,我们所需要处理的文件是 bin/sqlite3 和 lib/libsqlite3.so.0.8.6 。执行如下操作,完成配置
ln -sf /usr/local/sqlite3/bin/sqlite3 /usr/bin
ln -sf /usr/local/sqlite3/lib/libsqlite3.so.0.8.6 /lib/libsqlite3.so.0
2. 配置PHP
解压文件后,我们的php存在于 /usr/local/php 下,我们将我们的二进制文件链接到 /usr/bin 下。
ln -sf /usr/local/php/bin/php /usr/bin
3. 配置Lighttpd
解压文件后,我们的lihttpd存在于 /usr/local/lighttpd 下,我们将我们的二进制文件链接到 /usr/bin 下。
ln -sf /usr/local/lighttpd/bin/lighttpd /usr/bin
而后,我们配置lighttpd,让其可以正常运行。首先,手动创建如下文件夹:cache、cgi-bin、config、log、sockets、upload、vhosts、htdocs。而后将我们lighttpd源码包中的 doc/config 目录下的 config.d、lighttpd.conf和modules.conf复制到我们创建的config文件夹里面。而后对其配置文件进行修改。
首先,修改config/lighttpd.conf 该文件为启动lighttpd 的配置文件。修改规则如下。
# 将16行至20行修改为如下所示:
var.log_root = "/usr/local/lighttpd/log"
var.server_root = "/usr/local/lighttpd"
var.state_dir = "/usr/local/lighttpd"
var.home_dir = "/usr/local/lighttpd"
var.conf_dir = "/usr/local/lighttpd/config"
# 将61行修改如下
var.cache_dir = server_root + "/cache"
# 将93行修改如下
server.use-ipv6 = "disable"
#将104,105,152,158,191行注释掉:
#server.username = "lighttpd"
#server.groupname = "lighttpd"
#include "conf.d/access_log.conf"
#include "conf.d/debug.conf"
#server.network-backend = "linux-sendfile"
# 根据系统资源设置207行和254行的数值,如下
server.max-fds = 256
server.max-connections = 128
# 将343至345行注释掉:
#$HTTP["url"] =~ ".pdf$" {
# server.range-requests = "disable"
#}
# 将408行修改:
server.upload-dirs = ( "/usr/local/lighttpd/upload" )
修改完config/lighttpd.conf 后,修改conf/modules.conf 文件。
# 找到43行,按照格式插入如下内容:
"mod_alias",
# 使能fastcgi模块和cgi模块,将139行和144行的注释符去掉
include "conf.d/fastcgi.conf"
include "conf.d/cgi.conf"
而后修改config/conf.d/fastcgi.conf文件
# 在第九行附近的 server.modules += ( "mod_fastcgi" ) 后面添加如下内容
fastcgi.server = (
".php" => (
"localhost" => (
"socket" => "/usr/local/lighttpd.player.server.socket",
"bin-path" => "/usr/local/php/bin/php-cgi",
"max-procs" => 1,
"check-local" => "disable"
)
)
)
修改config/conf.d/dirlisting.conf文件
# 将24行的注释掉,否则启动服务报错
#dir-listing.exclude = ( "~$" )
配置完毕,启动lighttpd服务(需要手动定义配置文件位置)。
lighttpd -f /usr/local/lighttpd/config/lighttpd.conf
我们的根目录在 /usr/local/lighttpd/htdocs下,我们在下面创建一个静态文件index.html和test.php,用来测试连通性和php服务的可用性
# index.html
<html>
<head>
<title>lighttpd test</title>
</head>
<body>
<p>lighttpd test for loongnix</p>
<hr>
<p>hello word!</p>
</body>
</html>
# test.php
<?php
phpinfo();
?>
大功告成
智龙开发板搭建llsp环境的更多相关文章
- 第五章——搭建S3C6410开发板的测试环境
搭建S3C6410开发板的测试环境 通过本章的学习学会了如何在开发板上安装Android.开发板是学习和开发嵌入式技术的主要硬件设备,想要顺利的通过linux驱动访问硬件,是不能在PC板上模拟的,需要 ...
- 手把手教你君正X2000开发板的OpenHarmony环境搭建
摘要:本文主要介绍基于君正X2000开发板的OpenHarmony环境搭建以及简单介绍网络配置情况 本文分享自华为云社区<君正X2000开发板的OpenHarmony环境搭建>,作者: 星 ...
- 【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境
喜欢今日头条,偶然看到广告,半个多月前交了8.9元,报名参加了头条上Python的四天培训课,呵呵,总算是有了零的开始(还是有点收获的,见https://www.sohu.com/a/38112874 ...
- 第五章 搭建S3C6410开发板的测试环境
在PC上可以开发Linux驱动,重新编译成ARM架构的Linux驱动模块,但最后还是要在开发板上进行测试.目前最流行的是基于三星S3C6410 ARM11架构的开发板,很多厂商在其基础上进行了扩展,开 ...
- 第五章 搭建 S3C6.410 开发板的 测试环境
一.简介: 对于嵌入式驱动开发者来说,你必须要了解什么是开发板:它与我们经常用的手机类似, 包含了显示屏. 键盘. Wi-Fi. 蓝牙等模块等,是开发者必备的硬件设备.但与手机不同的是:在开发板上安装 ...
- AM335X开发板学习系列——环境搭建(vbox虚拟机ubuntu14.04下minicom的安装和配置)
这个系列是我学习AM335X的总结. 1. ubuntu虚拟机的USB设备,选择启用usbserial 2. ubuntu虚拟机的网络,采用桥接模式,以保证开发板和ubuntu虚拟机能互相ping通 ...
- 【HC89S003F4开发板】 1环境搭建
HC89S003F4开发板环境搭建 一.概述 芯圣电子做活动,一个开发板只用一块钱,买过来玩玩.︿( ̄︶ ̄)︿ 全套资料可以在论坛或qq群里下载.总之先安装个环境先. 二.安装Keil C51 作为增 ...
- 4412开发板搭建Uboot、Kernel和Android4.0的编译环境方法
本文转自迅为4412开发板实战教程书籍:http://www.topeetboard.com 迅为是基于Ubuntu12.04.2平台做开发,所有的配置和编译脚本也是基于此平台,没有在其它平台上测试过 ...
- 搭建S3C6410开发板的测试环境
因为ARM架构的开发板可基于X86架构的PC在CPU指令以及二进制上都有所不同,而且如果linux驱动需要访问硬件,这些硬件很难在PC上模拟,所以就需要我们在带有这些硬件的开发板上进行调试和测试. ...
随机推荐
- celery tasks always in pending
Result backend doesn't work or tasks are always in PENDING state¶All tasks are PENDING by default, s ...
- Prometheus的监控解决方案(含监控kubernetes)
prometheus的简介和安装 Prometheus(普罗米修斯)是一个开源系统监控和警报工具,最初是在SoundCloud建立的.自2012年成立以来,许多公司和组织都采用了普罗米修斯,该项目拥有 ...
- [bzoj5508]甲苯先生的字符串
首先定义状态f[i][j]表示长度为i的串以j为结尾有多少符合条件的串,发现$f[i][j]=\sum f[i-1][k]$(j和k可以相邻),这个用矩阵乘法优化一下即可. 1 #include< ...
- N皇后问题解法
// // Created by Administrator on 2021/8/5. // #ifndef C__TEST01_NQUEENS_HPP #define C__TEST01_NQUEE ...
- 在安卓开发中需要格式化桌面icon图标
使用以下在线工具即可实现http://www.makeicon.cc/home/index
- 痞子衡嵌入式:深扒IAR启动函数流程之段初始化函数__iar_data_init3实现
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是IAR启动函数流程里的段初始化函数__iar_data_init3实现. 本篇是 <IAR启动函数流程及其__low_level_ ...
- 为什么前端H5工程师工资那么高?
目前,企业对于html5前端开发人才需求量非常大,小到企业网站.个人主页,大到政府部门,都是通过网站向外界展示形象.传播信息,网站离不开HTML5前端开发人员,所以学习html5前端开发在当前社会非常 ...
- ZROI 2019 暑期游记
ZROI 游记 在自闭中度过了17天 挖了无数坑,填了一点坑 所以还是有好多坑啊zblzbl 挖坑总集: 时间分治 差分约束 Prufer序列 容斥 树上数据结构 例题C (和后面的例题) 点分 最大 ...
- Yii2 源码分析 入口文件执行流程
Yii2 源码分析 入口文件执行流程 1. 入口文件:web/index.php,第12行.(new yii\web\Application($config)->run()) 入口文件主要做4 ...
- 睡眠或者重启windows,无法ssh连接或者pingVMware的虚机
睡眠后无法直接ssh重连VMware主机问题 这个问题我在win8上出现过,win10看了下同事可以正常连,不知道其他有没有问题. 解决方法: 1.关闭vmnet8和vmnet0里面的 npcap 功 ...