Espruino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5889|回复: 11

Espruino入门教程-3 编译Espruino FW

[复制链接]

23

主题

43

帖子

9081

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9081

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

发表于 2014-6-13 17:52:04 | 显示全部楼层 |阅读模式
安装一个Ubuntu 14.04 LTS 32位的操作系统,我是装在真实机器上的,装在虚拟机上应该也可以。
在当前用户的主目录下创建一个文件夹BuildEspruino。
我的用户名是espruinocn,所以我在/home/espruinocn文件夹下创建了BuildEspruino文件夹。
将how2build文件夹拷贝至BuildEspruino文件夹。how2build文件夹由how2build.zip解压而来。

how2build文件夹里只有一个文件arm-2013.11-24-arm-none-eabi.bin

相关资料都在百度云盘资料共享里:编译EspruinoFW文件夹
how2build.zip - 包含arm-2013.11-24-arm-none-eabi.bin的压缩包
espruino_1v65_espruino_1r3_F103RCT6.bin - 官方版 1v65 Espruino FW,支持STM32F103RCT6处理器
espruino_1v65_espruino_1r3_F103RET6.bin - 修改版 1v65 Espruino FW,支持STM32F103RET6处理器
espruino_1v65.01_espruino_1r3_F103RET6.bin - 修改版 1v65 Espruino FW,支持STM32F103RET6处理器,版本和版权说明文字有改动
arm-2013.11-24-arm-none-eabi.bin - Sourcery CodeBench Lite for ARM EABI安装文件
(百度云盘资料共享: http://pan.baidu.com/s/1ntqMLst 密码:jgw8)

打开终端,依次输入下列命令:
espruinocn@espruinocn-Aspire-4755:~$ sudo -s
[sudo] password for espruinocn:  --->输入你的管理员密码
root@espruinocn-Aspire-4755:~# cd BuildEspruino
root@espruinocn-Aspire-4755:~/BuildEspruino# cd how2build
root@espruinocn-Aspire-4755:~/BuildEspruino/how2build# chmod a+x arm-2013.11-24-arm-none-eabi.bin
root@espruinocn-Aspire-4755:~/BuildEspruino/how2build#./arm-2013.11-24-arm-none-eabi.bin
接下来按截图所示的设定一步一步安装Sourcery CodeBench Lite for ARM EABI
Sourcery_CodeBench_Lite_for_ARM_EABI_001.png
Sourcery_CodeBench_Lite_for_ARM_EABI_002.png
记住下面的安装路径/root/MentorGraphics/Sourcery_CodeBench_Lite_for_ARM_EABI,后面会用到。
Sourcery_CodeBench_Lite_for_ARM_EABI_003.png
Sourcery_CodeBench_Lite_for_ARM_EABI_004.png
Sourcery_CodeBench_Lite_for_ARM_EABI_005.png
Sourcery_CodeBench_Lite_for_ARM_EABI_006.png
Sourcery_CodeBench_Lite_for_ARM_EABI_007.png
Sourcery_CodeBench_Lite_for_ARM_EABI_008.png
Sourcery_CodeBench_Lite_for_ARM_EABI_009.png
Sourcery_CodeBench_Lite_for_ARM_EABI_010.png

在终端窗口里敲回车键,继续输入下面的命令:
root@espruinocn-Aspire-4755:~/BuildEspruino/how2build# apt-get install git
正在读取软件包列表... 完成
正在分析软件包的依赖关系树      
正在读取状态信息... 完成      
将会安装下列额外的软件包:
  git-man liberror-perl
建议安装的软件包:
  git-daemon-run git-daemon-sysvinit git-doc git-el git-email git-gui gitk
  gitweb git-arch git-bzr git-cvs git-mediawiki git-svn
下列【新】软件包将被安装:
  git git-man liberror-perl
升级了 0 个软件包,新安装了 3 个软件包,要卸载 0 个软件包,有 231 个软件包未被升级。
需要下载 2,837 kB 的软件包。
解压缩后会消耗掉 21.7 MB 的额外空间。
您希望继续执行吗? [Y/n] --->输入y,然后敲回车键

root@espruinocn-Aspire-4755:~/BuildEspruino/how2build# git clone https://github.com/espruino/Espruino.git
正克隆到 'Espruino'...
remote: Reusing existing pack: 7482, done.
remote: Counting objects: 31, done.
remote: Compressing objects: 100% (31/31), done.
remote: Total 7513 (delta 11), reused 0 (delta 0)
接收对象中: 100% (7513/7513), 8.57 MiB | 1.39 MiB/s, done.
处理 delta 中: 100% (5098/5098), done.
检查连接... 完成。

root@espruinocn-Aspire-4755:~/BuildEspruino/how2build# chmod 777 * -R
root@espruinocn-Aspire-4755:~/BuildEspruino/how2build# cd Espruino
root@espruinocn-Aspire-4755:~/BuildEspruino/how2build/Espruino# make

root@espruinocn-Aspire-4755:~/BuildEspruino/how2build/Espruino# chmod 777 espruino
到这一步,你会看到有一个名为espruino的文件生成了,这是一个可以在linux下的运行的Espruino。
espruino_linux_002.png
root@espruinocn-Aspire-4755:~/BuildEspruino/how2build/Espruino# ./espruino
运行起来的画面如下图所示,按下ctrl+c可以退出linux版本的Espruino。
espruino_linux_001.png

下面来编译官方的1v65版本FW:
将Espruino/Makefile的第809行由export CCPREFIX=arm-none-eabi-改为
export CCPREFIX=/root/MentorGraphics/Sourcery_CodeBench_Lite_for_ARM_EABI/bin/arm-none-eabi-


将Espruino/Makefile的第122行由OPTIMIZEFLAGS+=-O3改为OPTIMIZEFLAGS+=-Os

在终端窗口执行下列的命令:
root@espruinocn-Aspire-4755:~/BuildEspruino/how2build/Espruino# cd scripts
root@espruinocn-Aspire-4755:~/BuildEspruino/how2build/Espruino/scripts# ./create_espruino_image_1v3.sh
出现下面的画面说明编译成功了!
espruino_arm_001.png
root@espruinocn-Aspire-4755:~/BuildEspruino/how2build/Espruino/scripts# cd ..
root@espruinocn-Aspire-4755:~/BuildEspruino/how2build/Espruino# chmod 777 * -R
你会看到有espruino_1v65_espruino_1r3.bin文件生成了。
espruino_arm_002 - 副本.png
把espruino_1v65_espruino_1r3.bin重命名为espruino_1v65_espruino_1r3_F103RCT6.bin,防止下次编译时候把文件给覆盖了。

接下来我们在这个1v65的基础上编译一版给STM32F103RET6用的FW,RET6的内存是64KB,闪存是512KB,其他参数是一样的。

修改Espruino/boards/ESPRUINOBOARD.py
第8行
'variables' : 1800 ---> 'variables' : 2600
这里variables的单位是20字节,因为要预留12K(12000)的堆栈空间,总的内存大小是64K(64000,这里的K是代表1000而不是1024)。
所以(64000-12000)/20 = 52000/20 = 2600
第26行
'part' : "STM32F103RCT6" ---> 'part' : "STM32F103RET6"
第29行
'ram' : 48 ---> 'ram' : 64
第30行
'flash' : 256 ---> 'flash' : 512


修改Espruino/src/jsinteractive.c
第658行
把" "JS_VERSION" Copyright 2014 G.Williams\n"); 改成
" "JS_VERSION" Copyright 2014 G.Williams -modified by EspruinoCN\n");


修改Espruino/src/jsutils.h
第37行
把#define JS_VERSION "1v65"改成
#define JS_VERSION "1v65.01"


再次运行create_espruino_image_1v3.sh
root@espruinocn-Aspire-4755:~/BuildEspruino/how2build/Espruino/scripts# ./create_espruino_image_1v3.sh
root@espruinocn-Aspire-4755:~/BuildEspruino/how2build/Espruino/scripts# cd ..
root@espruinocn-Aspire-4755:~/BuildEspruino/how2build/Espruino# chmod 777 * -R
你会看到有文件espruino_1v65.01_espruino_1r3.bin生成了。
将其名字改为espruino_1v65.01_espruino_1r3_F103RET6.bin,方便大家辨认其用途。
espruino_arm_003 - 副本.png

烧录FW的话,大家可以用ST提供的工具,这里不做赘述。
这里我选择的是Web IDE直接在线更新的办法。
将espruino_1v65.01_espruino_1r3_F103RET6.bin放到http://www.espruino.cn/binaries目录,这个权限只有网站管理员才有,当然你可以把FW给我,我来放到该目录。
espruino_binaries.JPG
然后在Web IDE的烧录界面填入我们要更新的FW所在的网络路径
http://www.espruino.cn/binaries/espruino_1v65.01_espruino_1r3_F103RET6.bin
选择'Advanced Flash Firmware'
advance_flash.JPG

新的FW烧录好之后,我们看下效果,版本号和版权描述都有按照我们的要求改变,可用的内存也变成2600,即2600*20 = 52000(52KB啦!)
1v65.01_WebIDE.JPG


0

主题

3

帖子

24

积分

新手上路

Rank: 1

积分
24
发表于 2014-6-13 18:14:40 | 显示全部楼层
感谢群主无私奉献啊!

26

主题

92

帖子

879

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
879

最佳新人活跃会员突出贡献论坛元老

发表于 2014-6-13 21:31:01 | 显示全部楼层
这个必须32个赞,

6

主题

21

帖子

110

积分

注册会员

Rank: 2

积分
110
发表于 2014-7-10 22:17:57 | 显示全部楼层
新的FW烧录好之后,我们看下效果,版本号和版权描述都有按照我们的要求改变,可用的内存也变成2600,即2600*20 = 52000(52KB啦!)



为什么要*20呢?

还有,没有源代码的情况下,再度编译有什么意义呢?
是可以裁剪原有系统的功能吗?
有没有源代码可以自己修改呢?

23

主题

43

帖子

9081

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
9081

最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主荣誉管理论坛元老

 楼主| 发表于 2014-7-10 23:16:39 | 显示全部楼层
kernel64 发表于 2014-7-10 22:17
为什么要*20呢?

还有,没有源代码的情况下,再度编译有什么意义呢?

1. 这里内存的单位是20字节,所以要 *20
2. 有源代码,espruino的软件和硬件都是开源的,不然我这篇文章咋叫编译espruino FW呢~
3.4. 源代码链接: https://github.com/espruino

1

主题

3

帖子

27

积分

新手上路

Rank: 1

积分
27
发表于 2014-8-3 11:28:07 | 显示全部楼层
楼主:你好!看Mentor的网页,发现这个编译环境也有基于Windows的版本,可以使用吗?,如果可以是不是就不用安装Linux了?因为不太熟悉Linux环境
发表于 2014-8-3 12:27:18 | 显示全部楼层
官方建议的编译方法是在Ubuntu下,你按照我写的步骤一步步走就可以了,很简单。Ubuntu使用起来也很简单的。
windows下的编译我没试过,你可以试试看

1

主题

3

帖子

27

积分

新手上路

Rank: 1

积分
27
发表于 2014-8-3 17:44:30 | 显示全部楼层
按照您的步骤我已经实现了,只是常用的PC上没有空间安装ubantu了,所以关注能否再windows下实现。

10

主题

43

帖子

523

积分

高级会员

Rank: 4

积分
523
发表于 2014-8-4 23:30:44 | 显示全部楼层
本帖最后由 JaVaScRiPt 于 2014-8-4 23:33 编辑

我在 unbuntu 上编译了 espruino 的代码,在控制台执行 ./espruino,进入这个会话后,我能作些什么呢?

这算是个模拟器吗?

如果没有硬件设备,我执行教程4里 TinyRTC 的代码,能得出一些实验效果吗?
2014-08-04 23:47:51 的屏幕截图.png

我粘贴l一段代码,卡在了第一行的注释这里。
Learning & Sharing
发表于 2014-8-4 23:39:32 | 显示全部楼层
JaVaScRiPt 发表于 2014-8-4 23:30
我在 unbuntu 上编译了 espruino 的代码,在控制台执行 ./espruino,进入这个会话后,我能作些什么呢?

...

这个espruino就是一个JS解释器,不是模拟器,操作硬件是无效的,只能玩玩和硬件无关的JS代码。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|Espruino中文社区 ( 苏14007051 )

GMT+8, 2018-4-27 16:08 , Processed in 0.413003 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表