lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame^] | 1 | make命令只能在ap/project/$(CHIP_NAME)/prj_xxx/build目录运行
|
| 2 |
|
| 3 | make help for more infomation
|
| 4 |
|
| 5 | 以prj_watch为例
|
| 6 | 1、AP版本编译需要获取ap、cp、build、pub、tools目录。
|
| 7 |
|
| 8 | 2、完整大版本编译:make allclean all,等同make recovery normal命令。
|
| 9 | 建议获取代码后完整编译一次,先编译recovery,再编译normal,编译后系统默认配置为normal版本。
|
| 10 | 应用和库的编译依赖uClibc的编译,uClibc和应用busybox依赖内核头文件,所以应用和库单独编译之前,建议完整编译一次。
|
| 11 |
|
| 12 | 3、增量编译命令
|
| 13 | normal版本编译:make normal,编译完成文件在project/zx297520v3/prj_watch/bin目录
|
| 14 | 如果编译报错,代码修改后增量编译:make normal2
|
| 15 | recovery版本类似,make recovery版本出错后,代码修改后增量编译:make recovery2
|
| 16 |
|
| 17 | 4、normal版本下,修改了cp侧代码,make ps kernel cpkoclean cpko rootfs copybin,或者可以用make normal2,后者编译时间稍长一点
|
| 18 | 内核文件、调试vmlinux、带调试信息的cpko.ko在project/zx297520v3/prj_watch/bin目录,cp代码以ko文件体现在ap_rootfs.img。
|
| 19 |
|
| 20 | 5、normal版本下,修改了内核代码,运行make kernel cpkoclean cpko rootfs copybin,或者可以用make kernel2,
|
| 21 | 内核文件和调试vmlinux在project/zx297520v3/prj_watch/bin目录,要同时烧录ap_cpuap.bin和ap_rootfs.img文件,ap_cpuap.bin和ap_rootfs.img(包含cpko.ko)不配套会开机死机。
|
| 22 |
|
| 23 | 5.1 normal版本下,修改了原生内核ko代码,make kernel rootfs copybin,或者可以用make normal2,后者编译时间稍长一点
|
| 24 | 内核文件和调试vmlinux 带调试信息的ko文件在project/zx297520v3/prj_watch/bin目录,ko体现在ap_rootfs.img文件里。
|
| 25 |
|
| 26 | 6、normal版本下,修改了lib代码,make appclean lib app rootfs copybin,或者可以用make normal2
|
| 27 | ap_rootfs.img为根文件系统,在project/zx297520v3/prj_watch/bin目录
|
| 28 | 如果app用了lib的静态库,app的Makefile发现不了依赖,所以最好appclean一下
|
| 29 |
|
| 30 | 解决库编译错误,可以make zte_lib=libnvram lib方式,这样只编译libnvram应用
|
| 31 | make zte_lib=libnvram libclean只清空libnvram的编译
|
| 32 |
|
| 33 | 7、normal版本下,修改了app代码,make app rootfs copybin,或者可以用make normal2
|
| 34 | ap_rootfs.img为根文件系统,在project/zx297520v3/prj_watch/bin目录
|
| 35 |
|
| 36 | 解决应用编译错误,可以make zte_app=appdemo app方式,这样只编译appdemo应用
|
| 37 | make zte_app=appdemo appclean只清空appdemo应用的编译
|
| 38 |
|
| 39 | 8、修改rc脚本
|
| 40 | rc脚本位置:
|
| 41 | normal版本:ap/project/zx297520v3/prj_watch/fs/normal/rootfs/etc/rc
|
| 42 | 修改后,make rootfs copybin
|
| 43 | ap_rootfs.img为根文件系统,在project/zx297520v3/prj_watch/bin目录
|
| 44 |
|
| 45 | recovery版本:ap/project/zx297520v3/prj_watch/fs/normal/rootfs/recovery/etc/rc
|
| 46 | 为了节省空间,recovery模式没有单独的根文件系统分区,修改后重新编译normal版本即可。
|
| 47 |
|
| 48 | 9、修改内核配置
|
| 49 | make all或make normal完整编译一次后,运行make kernel_menuconfig打开内核配置窗口
|
| 50 | 配置保存后将ap/os/linux/linux-3.4.x/.config信息同步到ap/project/zx297520v3/prj_watch/config/normal/config.linux
|
| 51 | recovery版本类似
|
| 52 |
|
| 53 | 10、修改busybox的配置
|
| 54 | make normal完整编译一次后,在ap/app/busybox/build目录运行make menuconfig。
|
| 55 | 配置保存后将ap/app/busybox/build/.config信息同步到ap/project/zx297520v3/prj_watch/config/normal/config.busybox
|
| 56 | recovery版本没有单独的根文件系统,recovery版本的busybox存放在normal的根文件系统里。
|
| 57 | make normal完整编译一次后,在ap/app/busybox_recovery/build目录运行make menuconfig。
|
| 58 | 配置保存后将ap/app/busybox_recovery/build/.config信息同步到ap/project/zx297520v3/prj_watch/config/normal/config.busybox_recovery
|
| 59 |
|
| 60 | 11、cp侧包含内核头文件:直接包含
|
| 61 | Makefile里头文件路径增加:-I$(LINUX_DIR)/include
|
| 62 |
|
| 63 | 12、内核包含cp侧头文件,要先包含cp_types.h,这里包含cp侧的基本数据类型定义。
|
| 64 | 比如psbuf.h
|
| 65 | Makefile里:
|
| 66 | ccflags-y += -I/$(CP_ROOT_DIR)/ps/modem/com/inc
|
| 67 |
|
| 68 | C文件:
|
| 69 | #include <linux/cp_types.h>
|
| 70 | #include "psbuf.h"
|
| 71 |
|
| 72 | 13、应用和库的Makefile要包含COMMON_BASE_MK或COMMON_MK。
|
| 73 | 经过configure生成Makefile的开源应用和库建议包含COMMON_BASE_MK,因为某些开源应用如果CFLAGS里包含宏定义会导致configure失败。
|
| 74 | ZTE自研应用包含COMMON_MK。COMMON_MK比COMMON_BASE_MK多定义了一些ZTE应用需要的特殊宏。
|
| 75 |
|
| 76 | 14、default_parameter_*文件位于ap/project/zx297520v3/prj_watch/fs/normal/rootfs/etc_ro/default目录
|
| 77 |
|
| 78 | 15、无论是normal版本还是recovery版本,根文件系统都是只读(ro)挂载的,如果要修改成可写用于调试,可以运行mount -o remount,rw /将根文件系统重新挂载为可写(rw)
|
| 79 |
|
| 80 | 16、ap侧nv配置说明
|
| 81 | 1)、注释和nv设置都是每行一条,换行符要求是linux格式(\n)
|
| 82 | 2)、注释行第一个字符必须是英文"#"号
|
| 83 | 3)、nv配置格式为:key=value,key和value可以包含空格,配置要小心,特别是key和value字符串首尾的空格,也是允许的
|
| 84 | 4)、只有在default_parameter_sys和default_parameter_user配置的nv项才会保存到flash,否则关机会丢失。可以用key=不设置value来预设nv项
|
| 85 | 5)、default_parameter_ro配置的nv项不对外开放,只用于生产相关
|
| 86 | 6)、nv show不显示default_parameter_ro配置的nv项,nv get和nv set命令也不能获取和设置default_parameter_ro的nv项,cfg_get_item()和cfg_set()函数接口也不能操作
|
| 87 |
|
| 88 | 17、共核宏CONFIG_SINGLECORE,使用范围:linux应用、linux库、linux内核和协议栈代码
|
| 89 |
|
| 90 | 18、linux操作系统宏:_OS_LINUX,使用范围:linux应用、linux库和协议栈。开源代码建议按照原来的风格使用__linux__、linux。
|
| 91 |
|
| 92 | 重点编译命令:
|
| 93 | normal版本修改代码后make normal2增量编译
|
| 94 | recovery版本修改代码后make recovery2增量编译 |