目录
第三章、Lua解析器代码编译
第二章我们讲了下lua内核和模块注册示例,那么第三章那我们就把它拿出来跑跑。
有的同学会讲,我这第二章也没怎么看懂啊,第三章还能继续学吗,要是不行的话那我就溜了,删库跑路走起。
少年不要怕,我以人格担保。这第二章别说你没看懂,就算你没看。第三章你也能跑起来,你也能学会。So ,Believe in Yourself !!!
3.1、CSDK分区相关知识
接下来的内容就和设备密切相关,在进入代码编译之前,我们需要知道一些基本的分区信息。我们这里以rda8910平台为例。
3.1.1、默认CSDK分区
rda8910(8M) | app预留空间 | 文件系统空间 |
---|---|---|
起始地址 | 0x60160000 | 0x60340000 |
长度 | 0x1E0000 | 0x160000 |
结束地址 | 0x60340000 | 0x604a0000 |
正常的csdk底层存在两块用户可操作的空间,第一是app的预留空间,其大小为1.875MB。理论上用户的app编译出来的结果最大可为1.875MB。
0
x
1
E
0000
=
1966080
=
x
∗
1024
∗
1024
0x1E0000=1966080=x*1024*1024
0x1E0000=1966080=x∗1024∗1024
x = 1.875 ( M B ) x=1.875(MB) x=1.875(MB)
但是实际上后面需要预留一点,留少了程序就运行不了,具体要预留多少我也没测试,所以…嘿嘿嘿,你懂的。
第二就是文件系统的预留空间,其大小为1.375MB。这个空间好像是有点小了哈,也别指望存储什么大文件。就这空间你连一首mp3都存不下。但是用来存些什么其他的小文本文件还是不错的。
0
x
160000
=
1441792
=
x
∗
1024
∗
1024
0x160000=1441792=x*1024*1024
0x160000=1441792=x∗1024∗1024
x = 1.375 ( M B ) x=1.375(MB) x=1.375(MB)
3.1.2、CSDK—elua项目分区
rda8910(8M) | app预留空间 | elua脚本区域 | 文件系统空间 |
---|---|---|---|
起始地址 | 0x60160000 | 0x602D8000 | 0x60340000 |
长度 | 0x178000 | 0x68000 | 0x160000 |
结束地址 | 0x602D8000 | 0x60340000 | 0x604a0000 |
是不是感觉又有点不太一样了,app可用空间又小了点。也就是说你能写的东西更少了。
0
x
178000
=
1540096
=
x
∗
1024
∗
1024
0x178000=1540096=x*1024*1024
0x178000=1540096=x∗1024∗1024
x = 1.46875 ( M B ) x=1.46875(MB) x=1.46875(MB)
我们又把app的空间裁剪出来一部分存储lua脚本。这个空间只有416KB。
0
x
68000
=
425984
=
x
∗
1024
0x68000=425984=x*1024
0x68000=425984=x∗1024
x
=
416
(
K
B
)
x=416(KB)
x=416(KB)
这样的话就发现app空间好像有点不太够,lua脚本空间好像也有点不太够。这也没办法,空间就只有这么大,少就少点吧,省着点用。
3.2、自定义elua脚本空间
有的同学讲这不行哎,我贼能写,这400KB脚本空间太小了不够我用的,赶快给我改大点。
emmm,改好了,各位老板们请查收。打开iot_sdk_4g_8910/config.cmake
文件看一下。有没有看到你想要的东西。
#/*+\NEW\chenzhimin\2020.07.21\ elua工程专用*/
if(CONFIG_BUILD_LUA)
set(CONFIG_LUA_FLASH_OFFSET 0x2D8000)
set(CONFIG_LUA_FLASH_SIZE 0x68000)
else()
set(CONFIG_BUILD_LUA OFF)
endif(CONFIG_BUILD_LUA)
message("BUILD_LUA:" ${CONFIG_BUILD_LUA})
#/*-\NEW\chenzhimin\2020.07.21\ elua工程专用*/
CONFIG_LUA_FLASH_OFFSET
参数就是设置lua脚本的起始地址的,默认是起始地址就是0x2D8000。
别打了,别打了…0x602D8000是物理地址,实际上每个地址前面都带有60,这个底层已经处理好了,我们只需要填写逻辑地址即可。
CONFIG_LUA_FLASH_SIZE
参数设置的是lua脚本空间大小,你可以修改这两个值。但是起始地址加上空间大小,也就说lua脚本结束的地址却不能超过0x340000
。一定要小心,不能计算错了。虽然我们将修改的接口开放出来了,但是我个人强烈建议不要随便修改!!!!
3.2、开始编译
cmd窗口进入iot_sdk_4g_8910/project
目录,然后执行app_elua.bat
。进入编译状态,这需要一点时间。
。。。。。。
好了。编译完成
3.3、下载固件及脚本
接下来就和大家使用LUAT版本开发一样了,打开luatools工具。尽量使用高于2.0.68的版本,低版本会出现CSDK日志信息打印不正确的问题。
下载固件和脚本。注意啦,这里选自己编译的固件!!!!在这个地方~\iot_sdk_4g_8910\hex\Air720U_CSDK_app_elua.pac
,脚本的话就和luat开发脚本一样,通用的没有区别。
下载结束就是这个样子了。
接下来可以去和其他人吹牛了,我也能编译luat源码了,想让它干什么就让它干什么。自己的模块自己做主!