常用命令如下:
mount -o remount,rw /ab/app 授权
sftp://[email protected]/ //登录地址
(一)进程发送信号的使用方法
1) ps -ef|grep mvpProject
2) 用:/home/jiang/abProject/signal的send程序发送命令数据,如: ./send pid号 20等
3) sudo ifconfig enx00e04c3669ac 192.168.5.66 //用这个网卡通信
注:由于HUB不同,所以"enx00e04c3669ac"也不同,根据实际情况设置IP;
(二)交叉编译的使用方法
第一次拉取进入docker容器
docker pull 192.168.130.58/autobrain/develop_tda4_rlt2_vh2.3.5:latest //从新拉取
docker run -itd 192.168.130.58/autobrain/develop_tda4_rlt2_vh2.3.5:latest /bin/bash //返回一个数字id
docker exec -it ea1190d87e41c6607cc9c189de26ab3b3c01814097f00373cf8e384ff4d12230 /bin/bash //如果正确的话,则进入docker
第二次直接进入docker容器
1) sudo docker start cdc566485f09 //注意:cdc566485f09是2.3.5版本; 9826d20a3ec7是2.4.1版本;
2) sudo docker exec -it cdc566485f09 /bin/bash
3) 最好再开启一个终端,只完成本地文件与docker容器文件拷贝,如:
sudo docker cp ab_demo/ cdc566485f09:/workspace/env_sdk_2.3.5/Libs/hat/task/
sudo docker cp cdc566485f09:/workspace/env_sdk_2.3.5/Libs/hat/task/ab_demo/out/ab_demo.elf ./
4) 进入docker容器后,进入"/workspace/env_sdk_2.3.5/Libs"目录下,输入make ab_demo,进行编译;
1) export PATH=$PATH:/opt/autobrain/sysroot/toolschain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/ 这样设置交叉编译环境 在/workspace/env_sdk_2.0.6/Libs的目录下,输入make ab_demo,可以发现编译器位置
2)echo $PATH 检测是否有效
输出: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/autobrain/sysroot/toolschain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-gcc
3) aarch64-none-linux-gnu-gcc -v
会输出相关的信息,如:Thread model: posix
gcc version 9.2.1 20191025 (GNU Toolchain for the A-profile Architecture 9.2-2019.12 (arm-9.10))等的字样
//protoc的使用注意事项:
不同版本的protoc生成的c文件会不兼容,需要根据实际情况确定;
protoc --cpp_out=./ *.proto //利用protoc命令,生成对应的cpp文件;
protoc --cpp_out=. byd_5r5v/*.proto livan/*.proto *.proto 或者: protoc --cpp_out=. lynkco06/*.proto *.proto*/ //带依赖关系的,必须这样生成,不能进文件夹内部生成;目录位置:/workspace/tools-server/src/st2pb/modules/common/src/data_struct/proto
//创建软链接时(如aaa,这个文件不能存在),ln -s /home/jiang/123.txt aaa;执行完左边的程序后,执行"ll"命令:终端显示aaa -> /home/jiang/123.txt
//在VH板子上,需要执行 export LD_LIBRARY_PATH=/run/media/mmcblk1p1/lib/:{LD_LIBRARY_PATH} ,才可以执行lcm相关的程序;
ifconfig eth0 192.168.5.150 用VH板子中间那个口接网线;
//在VH板子上,需要执行 route add default gw 192.168.5.1 添加网关;
vim xxx.file +linenum //在终端可以定位文件行号
sudo kill -9 -5261 杀死一个进程组(包括进程及其子进程),"-5261"必须用负数,代表一组,5261代表一个组ID
//出现下面的错误的原因,是编译链不匹配导致
arch64-none-linux-gnu/bin/ld: /workspace/env_sdk_2.3.5/Libs/hat/task/ab_demo/lib//liblcm.so: undefined reference to `g_thread_join'
如果用 lcm的话,libglib-2.0.so库和libpcre.so库必须添加,如下所示,在docker容器的位置:
LIB-y += /opt/autobrain/sysroot/usr/lib/liblcm.a
LIB-y += /opt/autobrain/sysroot/usr/lib/libglib-2.0.so
LIB-y += /opt/autobrain/sysroot/usr/lib/libpcre.so
subipc 发送的CPU ID 是 9;
subipc 接收的最大CPU ID 号是 23; 目前是从16开始; 理论上可以同时判断14个场景数据; 特别注意:CPU ID必须连续的
Alt + 1;Alt + 2; Alt + n多开终端切换;
dspcmd 18 subipc prtsts //查看发送和接收的subipc数据./
//lcm如果收不到数据,注意下面这两句话是否设置:
sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev enx000eaa0051a4 //注:enx000eaa0051a4是根据实际情况填写
lcm-logplayer-gui -l udpm://239.255.76.67:7667?ttl=1 AEB_001
//数据闭环外网http://192.168.130.179:30688/data/recycle
如果需要ping的话:ping 192.168.130.179
如果想在VH板子上使用远程拷贝,需要把 scp命令复制到 cp scp /bin/ 目录下;
scp ab_demo.elf root@192.168.5.150:/run/media/mmcblk1p1 //密码vh密码: hiklinux
//读一个完整的文件到程序中
int main(void)
{
ifstream ifs("cloudparam.txt"); //定义一个文件流对象
stringstream strbuf; //定义一个字符串流对象
strbuf<<ifs.rdbuf(); //读文件到字符串流对象中
string str(strbuf.str()); //用字符串流对象的成员函数构造一个字符串对象;
cout<<str<<endl; //输出字符串
ifs.close(); //关闭文件流对象;
return 0;
}
//getrequest拉取位置:
curl http://192.168.130.179:30315/api/getScene?vehicleId=1593513641609400322
dspcmd 17 algImgTest write 255 写一张文件图片命令
(一)解压同事白晓明的env_sdk_2.4.1的sdk,把文件拷贝到如下docker(keen_meitner)文件夹下,注意拷贝到docker容器是跟目录,和原生的sdk不是一个目录!!!
docker cp env_sdk_2.4.1 keen_meitner:/
(二)进入keen_meitner docker容器:
docker exec -it keen_meitner /bin/bash
(三)在docker根目录下,find -name ti-cgt-c7000_2.0.1.STS,查找文件,输出结果如下:
./opt/autobrain/sysroot/toolschain/ti-cgt-c7000_2.0.1.STS
(四)更改编译选项:
1)在"vi tools/toolchain/toolchain_linux_a72.mk"文件下,更改TC_PATH_CC和TC_PATH_ROOTFS目录,如下所示(注意是toolschain):
TC_PATH_CC := /opt/autobrain/sysroot/toolschain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin
TC_PATH_ROOTFS := /opt/autobrain/sysroot/toolschain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc
2)在"vi tools/toolchain/toolchain_freertos_r5f.mk"文件下,更改TC_PATH_CC目录,如下所示(注意是toolschain):
TC_PATH_CC := /opt/autobrain/sysroot/toolschain/ti-cgt-armllvm_1.3.0.LTS
3)在"vi tools/toolchain/toolchain_freertos_c71.mk"文件下,更改TC_PATH_CC目录,如下所示(注意是toolschain):
TC_PATH_CC := /opt/autobrain/sysroot/toolschain/ti-cgt-c7000_2.0.1.STS
(五)在docker中,更改Makefile编译环境的方法:
1)进入/workspace/env_sdk_2.4.1/Libs目录下;
2)按ab_demo的编译格式更改,共计更改七处,如添加process17目标文件;
3)在/workspace/env_sdk_2.4.1/Libs目录下,输入make process17即可;
LIB-y += $(ROOTFS_DIR)/usr/lib64/libpthread.so
(六) 出现类似如“task.cpp:(.text._Z7AppRecvv+0x24c): undefined reference to `Osal_setCpuName'”的错误,是需要拷贝配置环境,方法如下:
用白晓明给的的那个环境拷贝:cp /workspace/env/cfg_env/scfg/buildcfg/process17/ /workspace/env_sdk_2.3.5/Libs/env/cfg_env/scfg/buildcfg -R
涂宁告诉的:cp env/cfg_env/scfg/buildcfg/ab_demo/ /env_sdk_2.4.1/Libs/env/cfg_env/scfg/buildcfg/ -R
(七)刘占山告诉的,需要添加编译配置文件,方法如下:
进入目录:“/workspace/env_sdk_2.3.5/Libs/env/cfg_env/scfg/buildcfg”,打开 vim scfg_buildlist.mk文件,添加如下语句:
SCFG_BUILD_LIST += process17.linux_a72.19^
在把process移植到ab_demo的时候,需要在"../Libs/env/cfg_env/scfg/buildcfg/ab_demo/scfg_module.mk"文件中,按process17的scfg_module.mk文件格式:
添加语句如下:
SCFG_USE_MODULE_ADVANCE_IPC=y
SCFG_USE_MODULE_FIFO=y
SCFG_USE_MODULE_VB=y
添加完,就可以正常编译;
dspcmd 16 algImgTest imageFileID 739 19700101000208 //739是进程号,后面是时间字符串 注:17是CPUid,根据实际情况填写
利用gdb生成core文件
1) 设置coredump不受限制:ulimit -c unlimited
2) 设置转储文件位置和文件名格式
sudo bash -c 'echo 0 > /proc/sys/kernel/core_uses_pid'
sudo bash -c 'echo "/tmp/core_%e_%s_%u_%g_%p_%t" > /proc/sys/kernel/core_pattern'
3) 生成的文件效果如下图所示:
ls /tmp/core_target_11_1000_1000_24646_1690275145
/tmp/core_target_11_1000_1000_24646_1690275145
4) 最后利用core文件,调试程序如: gdb target core_target_11_1000_1000_24646_1690275145
//涂宁
1)用这个目录下的相机文件:“/env_sdk_2.4.3/DRV_TDA4VH_HAD_SD3A_T2_SDK_v2.4.3_230705_477737/Libs”
2)生成的目标文件的目录:"/env_sdk_2.4.3/DRV_TDA4VH_HAD_SD3A_T2_SDK_v2.4.3_230705_477737/Libs/out";
3)docker cp env_sdk_2.4.3 blissful_golick:/
4)vi tools/toolchain/toolchain_freertos_r5f.mk
5)/media/jiang/BOOT/out$ cp * ../ -R
6)sudo umount /media/jiang/BOOT
7)docker cp blissful_golick:/env_sdk_2.4.3/DRV_TDA4VH_HAD_SD3A_T2_SDK_v2.4.3_230705_477737/Libs/out/* . // 下载docker生成的文件*/
8)dspcmd 17 abImgTest write 255
9)在这个目录"/env_sdk_2.4.3/DRV_TDA4VH_HAD_SD3A_T2_SDK_v2.4.3_230705_477737/Libs/tools/toolchain",更改
toolchain_freertos_c71.mk toolchain_freertos_r5f.mk toolchain_linux_a72.mk等文件里面的编译目录:如下:
TC_PATH_CC := /opt/autobrain/sysroot/toolschain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin
TC_PATH_ROOTFS := /opt/autobrain/sysroot/toolschain/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/aarch64-none-linux-gnu/libc
10) sudo docker cp hat/demo/test_abImg.c b28ff1a514f3:/env_sdk_2.4.3/DRV_TDA4VH_HAD_SD3A_T2_SDK_v2.4.3_230705_477737/Libs/hat/demo 上传容器
11) docker cp b28ff1a514f3:/env_sdk_2.4.3/DRV_TDA4VH_HAD_SD3A_T2_SDK_v2.4.3_230705_477737/Libs/hat/task/process17/out/process17.elf ./ //下载elf
//生成文件命令
dspcmd 17 abImgTest write 255