# 问题 **Repository Path**: xyan_m/problem ## Basic Information - **Project Name**: 问题 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-08-02 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## F1C 移植AWTK问题描述 全志F1C100S ARM9 芯片,跑的rtthread,fb已经搞好,在工程上移植过littlevgl,并且已经跑起来。 现在想在上面换掉littlevGL,使用ZLG的AWTK工程。问题描述如下: ### 工程目录如下: ![](media/image-20200802174623901.png) 按照rtthread的规则,要往工程添加文件,需要自己编写个SConscript文件即可: 例如:上述截图的allwinner_tina/applications目录下有个main.c源文件,我想添加到工程编译,只需自己添加个SConscript即可,目录如下: ![](media/image-20200802175945151.png) 其中allwinner_tina/applications/SConscript文件内容如下: ```c from building import * cwd = GetCurrentDir() src = Glob('*.c') #这里面就实现了把main.c添加到编译了 CPPPATH = [cwd] group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH) Return('group') ``` 再例如,如果自己添加的文件有多级目录,例如上面截图的allwinner_tina/drivers目录: ![](media/image-20200802175658964.png) 其中,allwinner_tina/drivers/SConscript内容如下: ```c from building import * cwd = GetCurrentDir() src = Glob('*.c') #这里面就实现了把drivers/*.c添加到编译了 list = os.listdir(cwd) CPPPATH = [cwd] objs = [] group = DefineGroup('Drivers', src, depend = [''], CPPPATH = CPPPATH) for d in list: path = os.path.join(cwd, d) if os.path.isfile(os.path.join(path, 'SConscript')): objs = objs + SConscript(os.path.join(d, 'SConscript')) objs = objs + group Return('objs') ``` allwinner_tina/drivers/spi/SConscript 内容如下: ```c from building import * cwd = GetCurrentDir() src = Glob('*.c') #这里面就实现了把drivers/spi/*.c添加到编译了 CPPPATH = [cwd, str(Dir('#'))] group = DefineGroup('spi', src, depend = [''], CPPPATH = CPPPATH) Return('group') ``` 综上,我自己当时移植littlevGL的时候,也是按照如此规则添加littlevGL的代码到工程中,且编译和运行都OK, 这个工程实现lcd显示用fb的方式实现的: ```c static struct rt_device_graphic_info info 下面是打点函数,只需不断的往fbp32里面写入颜色数据即可, uint32_t *fbp32 = (uint32_t*) info.framebuffer; for (y = y1; y <= y2 && y < 800; y++) { memcpy(&fbp32[y * info.width + x1], color_p, w *sizeof(lv_color_t)); color_p += w; } ``` 不知道怎么和awtk描述的文档里面的对应起来 ```c #define set_window_func LCD_Set_Window #define write_data_func LCD_WriteData_Color ``` 基于以上工程,我下载了awtk目录,和awtk-port目录(参照https://github.com/zlgopen/awtk/blob/master/docs/porting_to_stm32f103ze.md和https://github.com/zlgopen/awtk-stm32f103ze-rtthread/blob/master/docs/rtt-port.md文档): awtk-port目录源代码还比较少,我自己加了个SConscript即可 ![](media/image-20200802180856650.png) 其中SConscript内容如下: ``` from building import * cwd = GetCurrentDir() src = Glob('*.c') CPPPATH = [cwd] group = DefineGroup('awtk_port', src, depend = [''], CPPPATH = CPPPATH) Return('group') ``` 问题来了,awtk目录有很多文件,并且你们有自己的SConstruct和awtk_config.py, 我应该怎么仿照rt模式,正如我上面描述的那样,怎么添加awtk目录下的源代码? ![](media/image-20200802181253253.png)