blob: 40177fb115fb7c66882b8e4c86faa83ed70ed737 [file] [log] [blame]
yuezonghe824eb0c2024-06-27 02:32:26 -07001make命令只能在ap/project/$(CHIP_NAME)/prj_xxx/build目录运行
2
3make help for more infomation
4
5以prj_watch为例
61、AP版本编译需要获取ap、cp、build、pub、tools目录。
7
82、完整大版本编译:make allclean all,等同make recovery normal命令。
9 建议获取代码后完整编译一次,先编译recovery,再编译normal,编译后系统默认配置为normal版本。
10 应用和库的编译依赖uClibc的编译,uClibc和应用busybox依赖内核头文件,所以应用和库单独编译之前,建议完整编译一次。
11
123、增量编译命令
13 normal版本编译:make normal,编译完成文件在project/zx297520v3/prj_watch/bin目录
14 如果编译报错,代码修改后增量编译:make normal2
15 recovery版本类似,make recovery版本出错后,代码修改后增量编译:make recovery2
16
174、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
205、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
235.1 normal版本下,修改了原生内核ko代码,make kernel rootfs copybin,或者可以用make normal2,后者编译时间稍长一点
24 内核文件和调试vmlinux 带调试信息的ko文件在project/zx297520v3/prj_watch/bin目录,ko体现在ap_rootfs.img文件里。
25
266、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
337、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
398、修改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
489、修改内核配置
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
5310、修改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
6011、cp侧包含内核头文件:直接包含
61 Makefile里头文件路径增加:-I$(LINUX_DIR)/include
62
6312、内核包含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
7213、应用和库的Makefile要包含COMMON_BASE_MK或COMMON_MK。
73经过configure生成Makefile的开源应用和库建议包含COMMON_BASE_MK,因为某些开源应用如果CFLAGS里包含宏定义会导致configure失败。
74ZTE自研应用包含COMMON_MK。COMMON_MK比COMMON_BASE_MK多定义了一些ZTE应用需要的特殊宏。
75
7614、default_parameter_*文件位于ap/project/zx297520v3/prj_watch/fs/normal/rootfs/etc_ro/default目录
77
7815、无论是normal版本还是recovery版本,根文件系统都是只读(ro)挂载的,如果要修改成可写用于调试,可以运行mount -o remount,rw /将根文件系统重新挂载为可写(rw)
79
8016、ap侧nv配置说明
811)、注释和nv设置都是每行一条,换行符要求是linux格式(\n)
822)、注释行第一个字符必须是英文"#"号
833)、nv配置格式为:key=value,key和value可以包含空格,配置要小心,特别是key和value字符串首尾的空格,也是允许的
844)、只有在default_parameter_sys和default_parameter_user配置的nv项才会保存到flash,否则关机会丢失。可以用key=不设置value来预设nv项
855)、default_parameter_ro配置的nv项不对外开放,只用于生产相关
866)、nv show不显示default_parameter_ro配置的nv项,nv get和nv set命令也不能获取和设置default_parameter_ro的nv项,cfg_get_item()和cfg_set()函数接口也不能操作
87
8817、共核宏CONFIG_SINGLECORE,使用范围:linux应用、linux库、linux内核和协议栈代码
89
9018、linux操作系统宏:_OS_LINUX,使用范围:linux应用、linux库和协议栈。开源代码建议按照原来的风格使用__linux__、linux。
91
92重点编译命令:
93normal版本修改代码后make normal2增量编译
94recovery版本修改代码后make recovery2增量编译