网站地址英文温州网站建设小公司
1 mdm
 1.1 屏蔽mdm sysvinit的console输出
 - uboot传入参数的时候传入console=null,这样Linux启动信息没有了
 - 还需要在Linux配置中去掉Support for console on AMBA serial port
 - 文件系统/etc/inittab文件里注释掉::respawn:/sbin/getty -L ttyS000 115200 vt100 -n root -I "Auto login as root ..."
 1.2 Ubuntu service
 /usr/sbin/service
 是个脚本,只是没有后缀.sh。
 2 cmake
 2.1 Yocto SDK
 Download SDK install script, then run the script to install SDK to target directory.
 SDK shell
 2.2 musl libc dynamic-linker
 $CC -o test test.c \
 -Xlinker \
 --dynamic-linker=/lib/ld-musl-aarch64.so.1
 2.3 静态库
 CMakeLists.txt中add_library()不指定SHARED,就是编译静态库。
 2.4 静态可执行
 CMakeLists.txt中target_link_libraries()添加-static,就是编译静态可执行。
 3 bitbake
 3.1 bitbake
 .bb file
 S = <Makefile directory>
 SRCREV = <gerrit commit id>
 SRC_URI += "file://0001-xxx.patch;patchdir=${WORKDIR}/git \
         file://0002-xxx.patch;patchdir=${WORKDIR}/git"
 0001-xxx.patch and 0002-xxx.patch are under current folder files.
 3.2 Yocto添加应用程序
 [26th-Apr-2022]
 rm /path/to/bitbake.lock
 For user space Makefile, refer to 3.3 of Android开发环境搭建和编译系统。
 meta-xxx/recipes-bsp/hello-bsp/files/COPYRIGHT
 meta-xxx/recipes-bsp/hello-bsp/files/Makefile
 meta-xxx/recipes-bsp/hello-bsp/files/include
 meta-xxx/recipes-bsp/hello-bsp/files/src
 meta-xxx/recipes-bsp/hello-bsp.bb
 SRC_URI = "file://COPYRIGHT"
 SRC_URI += "file://Makefile"
 SRC_URI += "file://include"
 SRC_URI += "file://src"
 S = "${WORKDIR}"
 TARGET_CC_ARCH += "${LDFLAGS}"
 do_compile () {
         echo "${WORKDIR}"
         oe_runmake
 }
 do_install () {
         install -d ${D}${sbindir}
         # hello_bsp name comes from Makefile.
         install -m 0755 hello_bsp ${D}${sbindir}/
 }
 bitbake -c cleanall hello-bsp
 bitbake hello-bsp
 Build whole project:
 core-image-base.bb
 IMAGE_INSTALL_append = "hello-bsp"
 bitbake core-image-base
 3.3 bitbake cmake
 [26th-Apr-2022]
 Need install ninja-build in Linux PC, otherwise cmake could not generate Makefile under build directory.
 The following first command in bb file is used to mkdir build folder for cmake, second command is used to pass parameters to cmake. Don't need add do_compile() and do_install() for cmake in bb file.
 inherit pkgconfig cmake
 EXTRA_OECMAKE += "-DXXX"
 bitbake -c cleanall hello-bsp
 bitbake hello-bsp
"inherit cmake" will call cmake.bbclass of OE build system.
3.4 standalone cmake showcase
 wget http://git.openembedded.org/bitbake/snapshot/bitbake-1.17.0.tar.gz
 1) export BBPATH=/path/to/project
 2) conf/bitbake.conf
 CACHE   = "${TMPDIR}/cache"
 STAMP   = "${TMPDIR}/stamps"
 TMPDIR  = "${TOPDIR}/tmp"
 B       = "${TMPDIR}"
 T       = "${TMPDIR}/work"
 BBFILES = "${BBPATH}/xxx.bb"
 3) classes/base.bbclass
 addtask build
 4) classes/cmake.bbclass
 S="${PWD}/xxx/build"
 cmake_do_build() {
     . /path/to/environment-setup-aarch64-poky-linux
     export SYSROOT_PATH=/path/to/sysroots/aarch64-poky-linux
     rm -rf "${S}"
     mkdir "${S}"
     cd "${S}"
     cmake ../ \
         -DCMAKE_INSTALL_PREFIX=$SYSROOT_PATH/usr/ \
         ${EXTRA_OECMAKE}
     make
     make install
 }
 EXPORT_FUNCTIONS do_build
 5) xxx.bb
 DESCRIPTION="build xxx"
 PN="xxx"
 EXTRA_OECMAKE +="-Dxxx=1"
 inherit cmake
 6)
 bitbake -s
 bitbake xxx -vDD
 3.5 Linux为普通用户添加Docker权限
 apt install docker.io
 sudo groupadd docker
 sudo usermod -aG docker <username>
 newgrp docker
 3.6 bitbake列出所有的target
 bitbake-layers show-recipes |grep <xxx>
 bitbake <xxx>
 4 codeSonar
 MISRA C:2012
 1) Create Project Tree and Create Project in codeSonar webserver.
 2) csshiftleft/scripts/config.ini
 ProjectName = the code sonar reports directory in webserver.
 3) csshiftleft/build/module_build.sh
 Add build commands to this file.
 4) build
 cd csshiftleft/scripts/
 python3 codesonarbuild.py
 codeSonar userName and Password are the Windows login userName and Password.
 5 ctest
 add_definitions()需要加在ADD_SUBDIRECTORY()之前,不然宏不起作用。
 ADD_SUBDIRECTORY(unittest)
 enable_testing()
 add_test(
     NAME ${BINARY_NAME}
     COMMAND ${BINARY_NAME} # It will call gtest main()
     <arg_list>)
