GoAhead4.1.0 开发总结一(移植)
环境
官方文档:https://www.embedthis.com/goahead/doc/
源码下载: goahead-4.1.0-src.tgz
系统平台:Ubuntu 12.04.4
gcc version 4.6.3
移植步骤
1.解压与编译
前提:交叉编译工具 arm-none-linux-gnueabi-gcc 已经安装并配置了环境变量;
tar -zxvf goahead-4.1.-src.tgz
cd goahead-4.1.0
// 交叉编译
make CC=arm-none-linux-gnueabi-gcc ARCH=arm
编译之后在 goahead-4.1.0/build 目录下生成了 linux-arm-default 文件夹
里面包含我们需要的 goahead 可执行文件和 库
2.开始测试
新建一个 goahead 文件夹,可nfs挂载,我们使用nfs挂载调试
将 goahead-4.1.0/build/linux-arm-default/bin 里面的 goahead libgo.so 拷贝到 goahead 文件夹
目标arm板开启 mount 挂载
cd /mnt/goahead
// 运行测试
./goahead -v ./web/ 192.168.10.111:80

这里出现不能获取本地IP地址
解决方案一:
修改源码 goahead-4.1.0/src/http.c
#else
{
#if 0
struct hostent *hp;
if ((hp = gethostbyname(host)) == NULL) {
error("Cannot get host address for host %s: errno %d", host, errno);
return -;
}
memcpy((char*) &intaddr, (char *) hp->h_addr_list[], (size_t) hp->h_length);
ipaddr = inet_ntoa(intaddr);
#else // wangh 2019-6-4 换种方式获取ip地址 (ipv4)
int sockfd;
struct sockaddr_in sin;
struct ifreq ifr;
sockfd = socket(AF_INET, SOCK_DGRAM, );
if (sockfd == -)
{
return -;
}
strncpy(ifr.ifr_name, "eth0", IFNAMSIZ); //网卡多的得修改下
ifr.ifr_name[IFNAMSIZ - ] = ;
if (ioctl(sockfd, SIOCGIFADDR, &ifr) < )
{
return -;
}
memcpy(&sin, &ifr.ifr_addr, sizeof(sin));
ipaddr=inet_ntoa(sin.sin_addr);
#endif
websSetIpAddr(ipaddr);
websSetHost(ipaddr);
}
#endif
return ;
}
修改源码后需重新编译,并重新将 goahead-4.1.0/build/linux-arm-default/bin 里面的 goahead libgo.so 拷贝到 goahead 文件夹
再测试

拷贝 build/linux-arm-default/bin/self.crt self.key 到 goahead

测试发现 不能打开 route.txt
拷贝 goahead-4.1.0/src/route.txt 到 goahead

拷贝 goahead-4.1.0/src/auth.txt 到 goahead

这里说明移植运行成功
再浏览器输入 目标板主机地址 192.168.1.124

这是因为网页的内容还没有添加
3 web内容添加
再 goahead 文件夹下 新建 web 文件夹

编写 测试 首页
<html>
<!- Copyright (C) HTGD Co.,Ltd. 2019 All Rights Reserved. ->
<head> <!- 文档包含的元数据 ->
<title>M283 Web Application</title> <!- 文档标题 ->
<meta charset="UTF-8"> <!- 中文编码 ->
<link rel="stylesheet" href="style/normal_ws.css" type="text/css">
</head>
<body> <!- 元素包含了可见的页面内容 ->
<h1>M283 Web Application</h1> <!- 一级标题 ->
<h2>The Simplified I/O Device Control</h2> <!- 二级标题 ->
<form id="gpio-2-4" action="/goform/gpio_p24" method="post">
<input type="hidden" name="lab_gpio_p2.4" value="gpio-p2.4" />
<table border="0">
<tr>
<td width=100><b>DeviceName </b></td>
<td width=100><b>Direction </b></td>
<td width=100><b>Value </b></td>
<td width=100><b>Setting</b></td>
</tr>
<tr>
<td width=100> Gpio P2.4 </td>
<td width=100>
<input type="checkbox" name="dir24" title="out" />out</td>
<td width=100>
<input type="checkbox" name="val24" /></td>
<td width=100><input type="submit" value="set" /></td>
</tr>
</table>
</form>
<form id="gpio-2-5" action="/goform/gpio_p25" method="post">
<input type="hidden" name="lab_gpio_p2.5" value="gpio-p2.5" />
<table>
<tr>
<td width=100>
Gpio P2.5</td>
<td width=100>
<input type="checkbox" name="dir25" title="out" />out</td>
<td width=100>
<input type="checkbox" name="val25" /></td>
<td width=100><input type="submit" value="set" /></td>
</tr>
</table>
</form>
<form id="gpio-2-6" action="/goform/gpio_p26" method="post">
<input type="hidden" name="lab_gpio_p2.6" value="gpio-p2.6" />
<table>
<tr>
<td width=100>
Gpio P2.6</td>
<td width=100>
<input type="checkbox" name="dir26" title="out" />out</td>
<td width=100>
<input type="checkbox" name="val26" /></td>
<td width=100><input type="submit" value="set" /></td>
</tr>
</table>
</form>
<form id="gpio-2-7" action="/goform/gpio_p27" method="post">
<input type="hidden" name="lab_gpio_p2.7" value="gpio-p2.7" />
<table>
<tr>
<td width=100>
Gpio P2.7</td>
<td width=100>
<input type="checkbox" name="dir27" title="out" />out</td>
<td width=100>
<input type="checkbox" name="val27" /></td>
<td width=100><input type="submit" value="set" /></td>
</tr>
</table>
</form>
<form id="gpio-led" action="/goform/led" method="post">
<input type="hidden" name="lab_led" value="led-err" />
<table>
<tr>
<td width=100>
LED-ERR</td>
<td width=100>
<input type="checkbox" name="dir_led" checked disabled title="out" />out</td>
<td width=100>
<input type="checkbox" name="val_led" /></td>
<td width=100><input type="submit" value="set" /></td>
</tr>
</table>
</form>
<form id="gpio-buzzer" action="/goform/buzzer" method="post">
<input type="hidden" name="lab_buzzer" value="buzzer" />
<table>
<tr>
<td width=100>
BUZZER</td>
<td width=100>
<input type="checkbox" name="dir_buz" checked disabled title="out" />out</td>
<td width=100>
<input type="checkbox" name="val_buz" /></td>
<td width=100><input type="submit" value="set" /></td>
</tr>
</table>
</form> <p> <!- 元素定义一个段落 ->
About the GPIO P2.4(,5,6,7), we assume the pin(s) are exported previously<br />
and they can work as GPIO.<br /><br />
The buzzer must connect JP1(BZ) on the board, else it does not buzze<br />
when the control signal is valid.
</p>
<h2>
System LCD Backlight Control</h2>
<form id="lcdbkl" action="/goform/lcdbkl" method="post">
<input type="hidden" name="lab_bkl" value="lab_bkl" />
<table>
<tr>
<td><b>backlight(0-100): </b></td>
<td><input type="text" name="bkl_val" value="80" size="3" maxlength="3" />%</td>
<td><input type="submit" name="lcd_bk" value="set"/></td>
</tr>
</table>
<hr/>
<p align="center"><b> © 2019 HTGD Co.,Ltd.</b> <a href="http://www.htgd.com.cn">公司主页</a></p>
</body>
</html>
然后执行 ./goahead -v ./web/
默认打开 index.html 其他页面直接写名称

GoAhead4.1.0 开发总结一(移植)的更多相关文章
- GoAhead4.1.0 开发总结二(自定义使用)
环境 官方文档:https://www.embedthis.com/goahead/doc/ 源码下载: goahead-4.1.0-src.tgz 系统平台:Ubuntu 12.04.4 gcc v ...
- GoAhead4.1.0 开发总结三(GoAction+Ajax实现局部数据交互)
环境 官方文档:https://www.embedthis.com/goahead/doc/ 源码下载: goahead-4.1.0-src.tgz 系统平台:Ubuntu 12.04.4 gcc v ...
- 【转】Vsftpd-3.0.2服务器arm-linux移植—mini2440开发板
Vsftpd-3.0.2服务器arm-linux移植—mini2440开发板 开发板:mini2440(2011.04.21)环境:ubuntu9.10 为方便的将文件上传到开发板,采用vsftpd, ...
- EJB3.0开发环境的搭建
EJB Container的介绍SUN公司正式推出了EJB的规范之后,在众多的公司和开发者中引起了非常大的反响.标志着用Java开发企业级应用系统将变的非常easy.很多公司都已经推出了或正打算EJB ...
- 【分享】iTOP4412开发板-Bluetooth移植文档
[分享]iTOP4412开发板-Bluetooth移植文档 最近须要把Bluetooth移植到iTOP-4412 开发平台.查阅了相关资料,经过一段时间的研究.调试,最终成功的将蓝牙功能移植到了开发板 ...
- (转)规划从 OpenGL ES 2.0 到 Direct3D 的移植
如果你移植 iOS 或 Android 平台中的游戏,那么你可能需要在 OpenGL ES 2.0 方面进行大量投资.如果你准备将你的图形管道代码库移动到 Direct3D 11 和 Windows ...
- 【VS开发】如何移植对话框?
[VS开发]如何移植对话框? 标签:[VS开发] 问题描述:当开发好一个可视化界面的时候,想将其移植到另外的工程中,这个时候希望能够导出对话框资源,好直接在另一个工程中进行编辑,而不用再次编辑对话框上 ...
- IMX6开发板Qtopia2.2.0开发环境搭建以及编译镜像
搭建 Qtopia2.2.0 开发环境,需要先搭建 Android 的编译环境,然后在 Android 编译环境的基础上,再搭建 Qtopia2.2.0 编译环境.以下内容基于迅为-iMX6开发板.Q ...
- ASP.NET Core 1.0 开发记录
官方资料: https://github.com/dotnet/core https://docs.microsoft.com/en-us/aspnet/core https://docs.micro ...
随机推荐
- Android BottomSheet:List列表或Grid网格展示(3)
Android BottomSheet:List列表或Grid网格展示(3) BottomSheet可以显示多种样式的底部弹出面板风格,比如常见的List列表样式或者Grid网格样式,以一个例子 ...
- vue2.0一个书城实例
gitHub克隆地址 git clone https://github.com/Webxiaoyaun/vue-book.git 点击去Github下载 ## 一个书城 ## 有增加,修改,缓存,懒加 ...
- 【Eclipse+IntelliJ反编译】Eclipse/IntelliJ IDEA反编译查看源码及注释
怎么用IDE查看第三方jar包的源码和注释,IntelliJ IDEA自带反编译器,Eclipse装个插件即可,不能看注释就麻烦了,总不能去找API文档吧,现在终于掌握了,下面给出解决方案,供大家参考 ...
- 百度音乐免费API接口
音乐分类: 1.新歌榜,2.热歌榜,11.摇滚榜,12.爵士,16.流行21.欧美金曲榜,22.经典老歌榜,23.情歌对唱榜,24.影视金曲榜,25.网络歌曲榜 说明:百度music web版全接口h ...
- HTML5学习之语义化标签
一.为什么HTML5要引入新语义标签 在HTML5出现之前,我们一般采用DIV+CSS布局我们的页面.但是这样的布局方式不仅使我们的文档结构不够清晰,而且不利于搜索引擎爬虫对我们页面的爬取.为了解决上 ...
- HDU 5642 King's Order【数位dp】
题目链接: http://bestcoder.hdu.edu.cn/contests/contest_showproblem.php?cid=677&pid=1003 题意: 求长度为n的序列 ...
- litepal创建数据库表失败
今天学习郭神的litepal框架遇到了一个坑,就是程序正常跑了,但是数据库和表完全没创建!!!!!!! 先核对了litepal.xml文件,确认配置正确,assets文件夹放的也正确,最后发现竟然是因 ...
- RabbitMQ环境搭建教程收集(待实践)
先收集,后续再实践. http://blog.csdn.net/zyz511919766/article/details/41896823 http://blog.chinaunix.net/uid- ...
- MongoDB小结15 - find【查询条件$ne】
$ne表示不相等 db.user.find({"name":{"$ne":"william"}})
- Mybatis中insert中返回主键ID的方法
<insertid=“doSomething"parameterType="map"useGeneratedKeys="true"keyProp ...