环境搭建
操作系统:Ubuntu 22.04.1 LTS
编译环境 - Docker
- 安装docker
sudo apt install docker.io
sudo groupadd docker # Add the docker group if it doesn't already exist.
sudo gpasswd -a fry docker # Add user fry to docker group
sudo service docker restart # restart Docker daemon
logout # log out and log back in
- Dockerfile
# Dockerfile for buildserver
FROM ubuntu:16.04
RUN apt-get update
RUN apt-get upgrade -y
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm sed cvs subversion coreutils texi2html docbook-utils python-pysqlite2 help2man desktop-file-utils libgl1-mesa-dev libglu1-mesa-dev mercurial autoconf automake groff curl lzop asciidoc u-boot-tools dwarfdump bc libtool make g++ unzip libncurses5-dev locales sudo cmake mtools gcc-arm-none-eabi vim-common srecord mtd-utils squashfs-tools
# set /bin/sh to bash
RUN rm /bin/sh && ln -sf /bin/bash /bin/sh
# Set the locale
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen && locale-gen
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US:en
ENV LC_ALL en_US.UTF-8
# Create user with sudo privileges
# IMPORTANT:
# user build should have the same uid as your host user.
# If your host user's uid is not 1000, add `-u <uid>` after useradd command
RUN useradd -ms /bin/bash build && usermod -aG sudo build
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
# Fake out logname (no login context in docker build)
RUN echo "echo build" > /usr/bin/logname
# Set as default user
USER build
WORKDIR /home/build
RUN echo 'alias ls="ls --color"' >> ~/.bashrc
CMD ["/bin/bash"]
- 从Dockerfile创建docker镜像(buildserver_xxxx 需要加自己名字避免冲突 repeat docker build -t ubuntu/buildserver_1003 -f Dockerfile .)
docker build -t ubuntu/buildserver_xxxx -f Dockerfile .
- 从docker镜像运行容器(编译的操作命令都在docker容器中执行, ubuntu/buildserver 是镜像名字,buildserver 是容器名字,都要改成你自己的)
docker run --privileged --rm -ti -u build -v $(pwd):/home/build/sav837 -w /home/build/sav837 --name buildserver_xxx ubuntu/buildserver_xxx
- 打开多个终端连接到同一个运行中的docker容器
docker exec -it buildserver_xxx bash
拉取代码
将下面一行添加到 /etc/hosts 文件末尾
10.1.102.196 www.askeygerrit.com.tw
mkdir sav837 && cd sav837
git config --global http.sslVerify false 不验证ssl
repo init -u http://fry_liu@www.askeygerrit.com.tw:80/Askey/SAV837/manifest -b master -m sav837_cdrc030_dev.xml --repo-url 'https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
sed -i 's/ssh/http/g' .repo/manifests/sav837_cdrc030_dev.xml
//修改配置文件里面验证方式
sed -i 's/ssh/http/g' .repo/manifests/sav837_cdrc030_dev.xml
//同步代码
repo sync
repo forall -pvc git checkout -b sav837_cdrc030_dev Askey/sav837_cdrc030_dev
- Applying the following patch for project
diff --git a/image/configs/m6/cardv.mk b/image/configs/m6/cardv.mk
index 301a05b..cab8dbd 100755
--- a/image/configs/m6/cardv.mk
+++ b/image/configs/m6/cardv.mk
@@ -584,14 +584,14 @@ rootfs:
ln -sf /$(WiFi_OUTPUT_ROOT)/wifi/bin/iw $(OUTPUTDIR)/customer/wifi/iw
# For RNDIS USB NIC
- cp $(KERN_MODS_PATH)/udc-core.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
- cp $(KERN_MODS_PATH)/libcomposite.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
- cp $(KERN_MODS_PATH)/u_ether.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
- cp $(KERN_MODS_PATH)/usb_f_ecm.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
- cp $(KERN_MODS_PATH)/usb_f_ecm_subset.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
- cp $(KERN_MODS_PATH)/usb_f_rndis.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
- cp $(KERN_MODS_PATH)/g_ether.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
- cp $(KERN_MODS_PATH)/udc-msb250x.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
+ #cp $(KERN_MODS_PATH)/udc-core.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
+ #cp $(KERN_MODS_PATH)/libcomposite.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
+ #cp $(KERN_MODS_PATH)/u_ether.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
+ #cp $(KERN_MODS_PATH)/usb_f_ecm.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
+ #cp $(KERN_MODS_PATH)/usb_f_ecm_subset.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
+ #cp $(KERN_MODS_PATH)/usb_f_rndis.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
+ #cp $(KERN_MODS_PATH)/g_ether.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
+ #cp $(KERN_MODS_PATH)/udc-msb250x.ko $(OUTPUTDIR)/$(WiFi_OUTPUT_ROOT)/wifi/firmware/
######################## ForWiFi #########################
if [ "$(ramdisk$(RESOUCE))" != "" ]; then \
diff --git a/image/image.mk b/image/image.mk
index bf47535..6f7f550 100755
--- a/image/image.mk
+++ b/image/image.mk
@@ -103,11 +103,11 @@ FLASH_BLK_CNT ?= 256
FLASH_PG_SIZE ?= 0x1000
else
ifeq ($(FLASH_TYPE), spinand)
-FLASH_BLK_SIZE ?= 0x40000
-FLASH_BLK_CNT ?= 2048
-FLASH_PG_SIZE ?= 0x1000
+FLASH_BLK_SIZE ?= 0x20000
+FLASH_BLK_CNT ?= 1024
+FLASH_PG_SIZE ?= 0x800
FLASH_PLANE_CNT ?= 0
-FLASH_SPARE_SIZE ?= 128
+FLASH_SPARE_SIZE ?= 64
endif
endif
编译镜像
//代码目录 sav837
docker run --privileged --rm -ti -u build -v $(pwd):/home/build/sav837 -w /home/build/sav837 --name buildserver ubuntu/buildserver
//进入sav837/buildscripts 目录
cd sav837/buildscripts/
//编译
./build.sh m6-016a-nand.profile -ac