FAQ
FAQ即为Frequently Asked Questions,指的是经常被问到的问题。
YOC编译链接相关问题
1、优化级别
- 默认的优化级别是Os
- 如果想修改全局优化级别为O0,可在solution对应的package.yaml中加入配置项cflag: -g -O0
如果仅修改某个组件的优化级别,在对应的package.yaml中也加入cflag配置项即可
YOCTOOLS相关问题
1、linux环境下找不到pip或者安装时速度很慢如何办?
以ubuntu为例,通过修改/etc/apt/sources.list,可将源修改为mirrors.aliyun.com,然后执行sudo apt-get update。其他linux发行版源的修改,请自行搜索。
- 若开发者使用默认使用python2,ubuntu下可通过sudo apt-get install -y python-pip安装pip。若默认使用python3,则通过sudo apt-get install -y python3-pip安装。
- 安装后请执行pip2 --version或pip3 --version判断是否安装成功。
- 安装成功后,可通过建立软链接重新指向到pip(如果pip命令执行时还是找不到或已经存在)
可通过which命令获取到pip等命令安装的位置
2、系统中存在多个版本的python或pip怎么办,如何快速切换?
可通过update-alternatives命令来切换,具体使用方法请自行搜索。若发行版中不存在的话,可直接通过软链接的方式切换。
3、执行pip命令时发生错误怎么办?
请确认pip和python是否处于同一个大版本
4、ubuntu20.04下python2下无法安装pip(此发行版默认无法通过sudo apt-get install -y python-pip安装pip)怎么办?
首先将当前的python版本切换到python2
- 下载get-pip脚本:curl https://bootstrap.pypa.io/get-pip.py --output get-pip.py
- 执行命令安装:sudo python2 get-pip.py
- 判断是否安装成功pip2 --version,并可通过软链接指向pip
5、在安装好yoctools后首次编译solution时出现import git错误怎么办?
```shell Build Solution by
scons: Reading SConscript files ... ImportError: Failed to initialize: Bad git executable. The git executable must be specified in one of the following ways:- be included in your $PATH
- be set via $GIT_PYTHON_GIT_EXECUTABLE
- explicitly set via git.refresh()
All git commands will error until this is rectified.
This initial warning can be silenced or aggravated in the future by setting the $GIT_PYTHON_REFRESH environment variable. Use one of the following values:
- quiet|q|silence|s|none|n|0: for no warning or exception
- warn|w|warning|1: for a printed warning
- error|e|raise|r|2: for a raised exception
Example: export GITPYTHONREFRESH=quiet : File "/home/yingc/yoc7/solutions/panguplayer/SConstruct", line 3: from yoctools import Make File "/usr/local/lib/python2.7/dist-packages/yoctools/_init.py", line 7: from .component import File "/usr/local/lib/python2.7/dist-packages/yoctools/component.py", line 20: from .gitproject import File "/usr/local/lib/python2.7/dist-packages/yoctools/gitproject.py", line 9: import git File "/usr/local/lib/python2.7/dist-packages/git/__init.py", line 85: raise ImportError('Failed to initialize: {0}'.format(exc)) Makefile:13: recipe for target 'all' failed make: * [all] Error 2
- 请确认git是否成功安装。ubuntu下通过命令:sudo apt-get install -y git安装
### 6、在安装好yoctools后首次编译solution时出现_send_output(message_body)错误怎么办?
```shell
Build Solution by
scons: Reading SConscript files ...
IOError: [Errno socket error] [Errno -3] Temporary failure in name resolution:
File "/home/yingc/yoc7/solutions/pangu_player/SConstruct", line 10:
defconfig.build_components()
File "/usr/local/lib/python2.7/dist-packages/yoctools/make.py", line 86:
self.build_component(component)
File "/usr/local/lib/python2.7/dist-packages/yoctools/make.py", line 74:
)}, variant_dir='out/' + component.name, duplicate=0)
File "/usr/local/lib/python2.7/dist-packages/scons/SCons/Script/SConscript.py", line 660:
return method(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/scons/SCons/Script/SConscript.py", line 597:
return _SConscript(self.fs, *files, **subst_kw)
File "/usr/local/lib/python2.7/dist-packages/scons/SCons/Script/SConscript.py", line 286:
exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
File "/home/yingc/yoc7/components/csi/SConscript", line 2:
defconfig.library_yaml()
File "/usr/local/lib/python2.7/dist-packages/yoctools/make.py", line 63:
self.build_env.build_component(component)
File "/usr/local/lib/python2.7/dist-packages/yoctools/builder.py", line 197:
env = self.clone_component(component)
File "/usr/local/lib/python2.7/dist-packages/yoctools/builder.py", line 185:
path = tool.check_toolchain(self.PREFIX)
File "/usr/local/lib/python2.7/dist-packages/yoctools/toolchain.py", line 119:
self.download(arch)
File "/usr/local/lib/python2.7/dist-packages/yoctools/toolchain.py", line 51:
wget(toolchain_url, tar_path)
File "/usr/local/lib/python2.7/dist-packages/yoctools/tools.py", line 204:
return urlretrieve(url, out_file, barProcess)
File "/usr/lib/python2.7/urllib.py", line 98:
return opener.retrieve(url, filename, reporthook, data)
File "/usr/lib/python2.7/urllib.py", line 248:
fp = self.open(url, data)
File "/usr/lib/python2.7/urllib.py", line 216:
return getattr(self, name)(url)
File "/usr/lib/python2.7/urllib.py", line 353:
h.endheaders(data)
File "/usr/lib/python2.7/httplib.py", line 1082:
self._send_output(message_body)
File "/usr/lib/python2.7/httplib.py", line 909:
self.send(msg)
File "/usr/lib/python2.7/httplib.py", line 871:
self.connect()
File "/usr/lib/python2.7/httplib.py", line 848:
self.timeout, self.source_address)
File "/usr/lib/python2.7/socket.py", line 557:
for res in getaddrinfo(host, port, 0, SOCK_STREAM):
Makefile:13: recipe for target 'all' failed
make: *** [all] Error 2
- 在首次make时,yoctools会从网络下载相应的工具链(如果之前没有安装过)安装到系统中,此时若没有联网会出现该错误。
若编译服务器无法上外网,也可通过平头哥芯片开放社区https://occ.t-head.cn/下载并安装对应的工具链
7、yoctools安装后无法找到product工具,product工具没有被安装到/usr/local/bin绝对路径中,而是被安装到了dist-packages目录下?
鉴于某些pip发行版本在安装时处理方式存在一些差异,若碰到该问题,请使用sudo pip install --no-binary=yoctools yoctools 命令安装
8、如何更改程序的运行地址
将对应的链接文件及分区表做修改,比如需要将运行地址更改为“0x18010000”
链接文件默认存在board组件的configs目录下,文件名默认为“gcc_eflash.ld”,也可通过“yoc show”命令查看
修改所有section的存放地址为“SDRAM”的“0x18010000”
- 分区表
链接文件默认存在board组件的configs目录下,文件名默认为“config.yaml” 比如更改“prim”的load地址为“0x18010000”
9、配置宏优先级
YAML文件里的配置宏在不用的目录下具有不同的优先级,典型来说优先级高低如下: Solution > Board>Chip
10、yoctools源码安装时出现error: can't create or remove files in install directory错误
yingc@50b7f6de110e:~/data/work/git/v7.4-dev/tools$ sudo python setup.py install
[sudo] password for yingc:
running install
error: can't create or remove files in install directory
The following error occurred while trying to add or remove files in the
installation directory:
[Errno 2] No such file or directory: '/usr/local/lib/python2.7/dist-packages/test-easy-install-4938.write-test'
The installation directory you specified (via --install-dir, --prefix, or
the distutils default setting) was:
/usr/local/lib/python2.7/dist-packages/
This directory does not currently exist. Please create it and try again, or
choose a different installation directory (using the -d or --install-dir
option).
此时可直接创建相应的文件夹解决:sudo mkdir -p /usr/local/lib/python2.7/dist-packages/
11、solution编译出错找不到product工具
CC out/helloworld/app/src/init/init.o
CC out/helloworld/app/src/main.o
AR yoc_sdk/lib/libhelloworld.a
ranlib yoc_sdk/lib/libhelloworld.a
AR yoc_sdk/lib/libcsi_pangu.a
ranlib yoc_sdk/lib/libcsi_pangu.a
LINK out/helloworld/yoc.elf
Generating generated/data/prim
INSTALL yoc.elf
scons: done building targets.
YoC SDK Done
[INFO] Create bin files
make: product: Command not found
Makefile:14: recipe for target 'all' failed
make: *** [all] Error 127
yingc@50b7f6de110e:~/data/work/git/yoc7/solutions/helloworld$
直接原因是product工具无法正常软链接到product64或product32上。根本原因很可能是安装yoctools时使用了缓存中的包。此时可使用如下命令重新安装:sudo pip --no-cache-dir install yoctools
12、在redhat中安装yoctools中出现ImportError: No module named ssl_match_hostname
错误
writing manifest file 'lib/PyYAML.egg-info/SOURCES.txt'
Copying lib/PyYAML.egg-info to /usr/lib64/python2.7/site-packages/PyYAML-5.3.1-py2.7.egg-info
running install_scripts
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/tmp/pip-build-aNBvTQ/pyyaml/setup.py", line 314, in <module>
python_requires='>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*',
File "/usr/lib64/python2.7/distutils/core.py", line 152, in setup
dist.run_commands()
File "/usr/lib64/python2.7/distutils/dist.py", line 953, in run_commands
self.run_command(cmd)
File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/usr/lib/python2.7/site-packages/setuptools/command/install.py", line 53, in run
return _install.run(self)
File "/usr/lib64/python2.7/distutils/command/install.py", line 575, in run
self.run_command(cmd_name)
File "/usr/lib64/python2.7/distutils/cmd.py", line 326, in run_command
self.distribution.run_command(command)
File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command
cmd_obj.run()
File "/usr/lib/python2.7/site-packages/setuptools/command/install_scripts.py", line 15, in run
from setuptools.command.easy_install import get_script_args
File "/usr/lib/python2.7/site-packages/setuptools/command/easy_install.py", line 49, in <module>
from setuptools.package_index import PackageIndex
File "/usr/lib/python2.7/site-packages/setuptools/package_index.py", line 14, in <module>
from setuptools import ssl_support
File "/usr/lib/python2.7/site-packages/setuptools/ssl_support.py", line 85, in <module>
from backports.ssl_match_hostname import CertificateError, match_hostname
ImportError: No module named ssl_match_hostname
安装相应的python库即可:sudo pip install backports.ssl_match_hostname
13、当solution支持多个board时如何切换不同的board编译
make后增加BOARD 参数,例如将board指定为pangu编译
make BOARD=pangu
14、如何打开编译log
make后增加“V=1”
make V=1
15、如何添加组件
- 使用yoc的install命令下载组件(如果本地存在该组件可略过)
- 在solution下的package.yaml中的depends字段下增加该组件名,比如增加drivers组件
depends: - drivers: v7.4-dev
16、编译版本太老的解决方法
1.首次编译solution工程会在~/.thead下面自动下载工具链,随着版本的持续更新,需要新的编译器 2.解决方法,在OCC社区下载新的编译器,在自己的.bashrc文件配置更新 3.把原来的卸载了sudo pip uninstall yoctools,然后再sudo pip install yoctools更新工具
镜像烧录相关问题
1、用product烧写镜像会卡住
- 首先确认当前目录下的.gdbinit文件针对debugserver的IP配置是否正确,一般情况下是这样的:
target remote 169.254.125.175:1025
- 如果.gdbinit文件配置正确之后,还是会卡住,那么请再当前终端输入以下命令:
csky-abiv2-elf-gdb --interpreter mi xxx.elf
如果有出现红色框框里面的字符串,那么请联系开发者
2、Pangu板子,用make flash方式烧写不成功,怎么办?
解答:漏电导致CPU处于一种异常状态,导致无法烧写。需要彻底下电,拔除所有的电源线、数据线等,等10s后,再重新上电烧写
3、Fota升级过程中或写flash后设备重启起不来的情况,可能是什么原因?
解答:可能是flash烧写有误,misc分区被烧写进其他东西,导致验签不过,需要使用命令擦除干净:product flash images.zip -e misc
4、设备Fota升级时,设置完model和烧录镜像等后,如何查看设备已经具备升级条件?
解答:设备设置好model、otaurl、cid,以及烧录好version后,需要登录occ控制台,查看我的产品下面,第一个固件的设备数为1。
![image.png](https://intranetproxy.alipay.com/skylark/lark/0/2020/png/262679/1601036726002-31ba4ccd-21f0-4824-bf79-27559fcb5455.png#align=left&display=inline&height=130&margin=%5Bobject%20Object%5D&name=image.png&originHeight=259&originWidth=1187&size=35829&status=done&style=none&width=593.5)
5、CB5654开发板烧写注意点
在使用CB5654开发板过程中,烧写镜像一定要注意不要使用product工具进行全分区的烧写
千万不能使用 product flash images.zip -a
原因是开发板有个分区为boot分区,如果boot分区被破坏就会导致开发板无法启动以及无法连接debug server
需要重新擦除烧写flash才能成功启动
debugserver无法连接的情况: 所以大家在遇到CB5654开发板无法连接debug server时候请回想下,是不是在烧写过程中进行了异常操作
正确的烧写方法:
dsp烧写:product flash images.zip -w dsp
prim烧写:product flash images.zip -w prim
lfs烧写:product flash images.zip -w lfs
需要不同分区单独烧写,尽量在solution中使用make flashall
进行烧写
安全组件相关问题
1、TEE接口csi_tee_get_cid获取CID失败
确认单板是否已经烧写efuse kp数据,烧写方法参考文档 https://yuque.antfin-inc.com/occ/xyrz27/sqosdb
2、运行安全组件时出现栈溢出,如“stack overflow: uart_task!”如何解决?
出现该问题的场景一般是配置了软件算法,由于软件算法对栈的需求较高从而导致该问题。根据测试经验安全组件对栈的需求最大在8K左右,根据具体场景不同略有差异,一般可以尝试在6-8K间调整task stack。如uart_task的栈大小可以通过配置宏调整 CONFIG_CLI_TASK_STACK_SIZE: 8192。
3、YOC中有哪些安全算法的安全机制?
安全算法可以分类为硬件实现与软件实现两大类,其中硬件实现包含安全MCU安全机制与TEE安全机制,软件实现即为软件安全机制。安全MCU安全机制对应配置宏CONFIG_SYSTEM_SECURE,调用CSI IP驱动接口。TEE安全机制对应配置宏CONFIG_TEE_CA,调用CSI TEE驱动接口。软件安全机制作为无安全算法IP平台的补充,对应用方案提供提供与硬件机制一致的编程接口,方便安开发。安全级别相对硬件机制低,适用安全需求不强烈/成本敏感等场景。
4、YOC中包含哪些安全算法?
包含AES、SHA1/SHA2、TRNG、RSA、ECC算法。其中AES、SHA1/SHA2、TRNG、RSA采用硬件机制。ECC采用软件机制。
5、安全组件有哪些?
YOC中安全相关的组件包含mbedtls、tee、boot、sec_crypto、key_mgr、partition、csi。
6、YOC中如何调用安全算法?
对于包含mbedtls组件的平台,优先调用mbedtls组件提供的接口。对于无mbedtls组件的平台可以调用sec_crypto组件。
7、平台只包含部分安全算法IP,应该如何配置?
对于只包含部分安全算法的平台,如只包含AES IP,可以将SHA、RNG、RSA、ECC配置为软件机制实现, 各算法软件机制配置方法如下: CONFIG_SEC_CRYPTO_AES_SW: 0 CONFIG_SEC_CRYPTO_SHA_SW: 1 CONFIG_SEC_CRYPTO_RSA_SW: 1 CONFIG_SEC_CRYPTO_RNG_SW: 1 CONFIG_SEC_CRYPTO_ECC_SW: 1
8、YOC7.4如何切换到安全态(即可信赖环境)?
解答:进入boards/thead/pangu_cpu0/package.yaml文件,修改export: 部分,如下图
![image.png](https://intranetproxy.alipay.com/skylark/lark/0/2020/png/296001/1601020949240-18ec05a1-ee92-4c08-87ac-4d626a8965f7.png#align=left&display=inline&height=224&margin=%5Bobject%20Object%5D&name=image.png&originHeight=224&originWidth=325&size=9800&status=done&style=none&width=325)
再修改需要烧写的solution的package.yaml,添加宏:CONFIG_SYSTEM_SECURE: 1
再重新编译:make clean;make
烧写:make flashall
CSI问题
YoC7.4如何从CSI1.0切换到CSI2.0?
解答:进入components/csi_pangu/package.yaml文件,修改def_config:部分,如下图
![image.png](https://intranetproxy.alipay.com/skylark/lark/0/2020/png/296001/1601019747658-f124e48d-fcc9-4f8e-8091-c2b5760e3cea.png#align=left&display=inline&height=93&margin=%5Bobject%20Object%5D&name=image.png&originHeight=93&originWidth=422&size=5568&status=done&style=none&width=422)
再重新编译:make clean;make
烧写:make flashall
GDB调试问题
1、有些寄存器存在读清的功能,读整个寄存器会把所有位清零?
读取单个位 p/x (dw_timer_regs_t)*0xfff4d000改为x/wx 0xfff4d01
2、遇到程序莫名跑飞或者程序正常运行但是打印没有字符出来的情况,需要检查链接脚本内容与CONFIG_XIP是否匹配
如图所示,如果REGION_RODATA所在地址与REGION_DATA所在地址不一致,需要将宏CONFIG_XIP定义打开。反之关闭宏定义。在csi_chip_xxx/package.yaml文件中的def_config中设置: 打开CONFIG_XIP: def_config: CONFIG_XIP:1
3、怎么区分使用CSI1.0和CSI2.0的接口?
在csi_chip_xxx/package.yaml文件中的def_config中选择: 如下选择CSI1.0接口: def_config: CONFIG_CSI_V1: 1 CONFIG_CSI: "csi1.0" 如下选择CSI2.0接口: def_config: CONFIG_CSI_V1: 1 CONFIG_CSI: "csi2.0"
4、CSI2.0接口中有些变量定义为什么要使用unsigned long,而不是uint32_t
为了适配64位系统。unsigned long在64系统中是64位,在32位系统中是32位。
5、读取SPIFLASH内容失败
可以通过GDB查看flash上内容是否正确,如果查看出来的都是同一个值。说明flash的四线模式未使能,需要根据flash的型号,将对应的QE(quad enable)四线模式使能打开。参考如下:需要将0x3a800000替换成对应的QSPI控制器基址 华邦: (volatile uint32_t )0x3a8000a8=0x200 (volatile uint32_t )0x3a800090=0x6000001 (volatile uint32_t )0x3a800090=0x1009001 (volatile uint32_t )0x3a800090=0x35800001 x /wx 0x3a8000a0
GD: (volatile uint32_t )0x3a8000a8=0x2 (volatile uint32_t )0x3a800090=0x6000001 (volatile uint32_t )0x3a800090=0x31008001 (volatile uint32_t )0x3a800090=0x35800001 x /wx 0x3a8000a0
万宏: (volatile uint32_t )0x3a8000a8=0x40 (volatile uint32_t )0x3a800090=0x6000001 (volatile uint32_t )0x3a800090=0x1009001 (volatile uint32_t )0x3a800090=0x5800001 x /wx 0x3a8000a0
6、CSI2.0 中TSPEND的作用是什么?
tspend用于rtos系统线程切换,开启tspend,可以将线程切换与普通中断解耦。在切换线程时,通过软件将tspend置位,产生tspend中断,专用于任务切换使用。
7、CSI2.0最小系统,main函数之前执行了那些操作?
在执行main函数之前,执行了系统启动配置。包括cpu、中断向量表、cache、flash等配置。 打开启动文件startup.S,可以看到启动文件内调用了SystemInit、per_main。启动顺序如下 SystemInit->per_main->main **
yoc模拟器运行问题
安装csky qemu缺少动态库,怎么安装
sudo apt install libbrlapi-dev sudo apt install libvdeplug-dev sudo apt install libaio-dev sudo apt install libpixman-1-dev sudo apt install libnuma-dev sudo apt install libbluetooth-dev wget -q -O /tmp/libpng12.deb http://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb && sudo dpkg -i /tmp/libpng12.deb && rm /tmp/libpng12.deb sudo apt install libjpeg-dev sudo apt install liblzo2-dev sudo apt install libsnappy-dev sudo apt install libspice-server-dev
驱动调试常见问题
uart
- 打印乱码
- uart 的时钟源为Apb bus clk, 而apb bus clk 随着系统pll 分频的变化而变化,驱动需要注意期望的波特率与实际分频得到的波特率之间的误差是否超过2%, 如果超过了,会出现部分字符显示乱码.
- 驱动能力不足也会出现打印乱码,soc 外接调试设备时,有时外部设备的电流驱动能力不足,会从soc汲取电流,从而导致uart的时序信号恶化,这时可以通过增强uart IO pin 的驱动能力,看是否可以解决.
- 软件驱动获取uart的时钟源函数存在错误(soc_get_uart_freq),比如程序获取的时钟源值与soc 实际的时钟源值不同,这时需要检查下软件获取的值是否与硬件提供的时钟源值匹配.
BLE HOST组件对接问题 1.对接完成后,如何验证 最简单的验证方法是直接初始化协议,如果成功,表示对接基本无问题。 示例代码参考
#include <aos/ble.h>
init_param_t init = {
.dev_name = "TEST",
.conn_num_max = 1,
};
int ret = ble_stack_init(&init);
if (ret)
{
printf("ble stack init error %d\n", ret);
}
Solution相关问题
1、烧录pangu_demo或pangu_player代码,用串口指令播歌,无法播放中文歌曲
解答:需要将串口工具的字符编码类型改为UTF-8。
2、在应用开发过程中用户需要使用自己的分区表应该怎么办?
首先分区表在每个对应的board中 比如pangu板子的分区配置文件在boards/thead/pangu_cpu0/configs/config.yaml中 如果需要新增或修改分区可以在此文件进行修改,但是这样需要需改board中的信息,如果存在其他应用也在 用这个配置就会有冲突 所以这里有个办法可以让用户在自己的solution中就可以配置自己的分区文件
solution中存在一个`package.yaml`文件
在最后增加配置,把对应的配置文件放在当前目录的configs文件中
![image.png](https://intranetproxy.alipay.com/skylark/lark/0/2020/png/233523/1601016811289-c59a110f-3b08-41a1-b8d0-a69f6690ae1e.png#align=left&display=inline&height=70&margin=%5Bobject%20Object%5D&name=image.png&originHeight=70&originWidth=401&size=4119&status=done&style=none&width=401)
这里有一个小小的注意点,不能修改`config.yaml`文件的名字哦
在编译过程中会把`config.yaml`文件放到`generated/data`目录中,系统不会默认修改名称,名称不能被随
意改变
CDK相关问题
1、CDK多个工程使用相同组件,不要随意修改组件代码
CDK多个solution可能会使用相同组件,建议千万不要随意修改组件代码,如果修改导致别的solution编译不过,需要 删除packege文件;
比如:我下载了一个Project命名为5654,我修改了adc_button组件中的adc_key_src.c(把所有的代码都删除了); 然后,我重新NEW IOT Project,重新拉取一份solution代码,这份代码中同样也包含了adc_button这个组件,然后找到该adc_key_srv.c文件,会发现该.c文件也是空的!! 所以,CDK多个solution可能会使用相同组件,建议千万不要随意修改组件代码。
2、CDK,修改solution代码目录名称时,package.yaml不会把路径改全
在创建完毕自己的IOT工程的时候,我们有时会有修改代码目录名称的需求,比如:我们需要把代码目录名称"app"修改成"test";右键选择Rename,输入新的名称"test"; 待修改成功之后,选择IOT Project的名称,右键选择,Open Solution Config File,查看package.yaml文件; 打开package.yaml文件以后,会发现在include中,之前的代码目录名称"app"并未进行同步的修改; source file中有部分未进行修改; 如果这时我们进行编译,则会报错;那么我们要怎么去使我们的编译通过呢?有如下两种方法:
- 我们手动把package.yaml中未修改成功的,修改成我们想要的代码目录"test";
- 右键点击IOT Project项目名称,选择 Option for Project_name,选中Compiler section,点击include后面的"..."图标,手动把之前的代码目录名称"app"改成我们想要的"test",点击OK,进行保存;
3、CDK,修改工程名称后,重新编译需要执行Rebuild
当创建IOT工程后,有时需要修改工程名称,比如:把工程名称"led_blink_demo"修改成"test";右键选择Rename,输入新的名称"test"; 修改成功后,若执行Build或点击工具栏build图标,会有编译报错。 我们需要右键工程名,选择Rebuild,编译就能成功了。