lan-ct / cpp-history

c++历史项目
0 stars 0 forks source link

picar #1

Open lan-ct opened 9 months ago

lan-ct commented 9 months ago

Created by YU Xianyu (BCSC-EPA4), last modified on 2023, Dec 06 Current Version V 35Page Info

  1. 开源项目选型 由于树莓官方不支持Android,通过网上资料查找对比了几个相对来说比较做的不错的项目:

android RPI:https://github.com/android-rpi LineageOS: https://konstakang.com/devices/rpi4/LineageOS20/ emteria.os:https://emteria.com/ (代码不开源 Android Things:https://developer.android.com/things

由于后两者不开源代码,并且Android things 2022年关闭; LineageOS一般只有镜像刷写的流程,没有编译流程;

因而我们这里选择源码开源和编译流程较为成熟的android RPI作为指导,整体参考网站如下:

https://github.com/android-rpi/device_arpi_rpi4

  1. 硬件和软件配置 服务器硬件: intel W-1250P 处理器+32GB DDR4 RAM + 1000GB ROM(SSD)服务器配置

服务器软件:博世OSD6系统(内置ubtun20.4 ,需要申请OSD,然后找IT来安装)

树莓派SD卡:B4 + 128GSD卡

  1. android环境安装和代码下载 1.android编译环境配置

下载android代码前,需要配置下android的下载和编译环境,参考如下连接

https://source.android.com/docs/setup/start/initializing

  1. repo配置

国内由于墙的原因,不能访问到google的官网以及下载源码等

这里我们通过清华大学开源软件镜像站下载:

https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

对于repo等的配置,参考上面配置就可。

ps:记得安装环境后,python默认运行pythn3.否则运行repo就会有问题

3.源码下载

以上的环境配置完成后, 就可以下载代码了

考虑到速度以及网络的原因,通过清华镜像下载源码:

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r74

git clone https://github.com/android-rpi/local_manifests .repo/local_manifests -b arpi-13

repo sync

  1. 树莓派android代码编译 源码下载后, 进入到工程根目录运行如下命令

$ source build/envsetup.sh

$ lunch rpi4-eng

$ make ramdisk systemimage vendorimage

整个编译过程2小时左右。

对于编译出来的镜像以及Android的分区介绍如下:

boot分区:由 kernel 和 ramdisk 构成。存放BootLoader程序,起开机启动和引导作用,是手机接通电源后以一个执行程序;

vendor:包含有厂商私有的可执行程序、库、系统服务和app等。可以将此分区看做是system分区的补充,厂商定制ROM的一些功能都可以放在此分区;

system分区:这个分区包含了整个操作系统除 kernel 和 ramdisk 之外的其它部分,包括 Android UI 和设备上预装的 APP;

data分区:也被称作 userdata,是用户数据被存储的地方——也就是说你的联系人、短信、配置文件和你自己安装的 APP 都位于这里。

  1. kernel的下载和编译 1.kernel代码下载

重建一个和android源码不同的工程目录,下载kernel代码

$ mkdir

$ cd

$ repo init -u https://github.com/android-rpi/kernel_manifest -b arpi-5.15

$ repo sync

2.kernel 编译

$ cd

$ build/build.sh 编译出来的文件目录在out/arpi-5.15/dist/ Image.gz bcm2711-rpi-*.dtb vc4-kms-v3d-pi4.dtbo

  1. SD分区和镜像刷写 1.SD卡分区划分

这里利用的是linux自带的fdisk,对SD卡进行分区 根据编译出来的镜像大小,这里划分4个主分区,每个分区的信息如下:

p1 256MB for boot : Do fdisk, set W95 FAT32(LBA) & Bootable type, mkfs.vfat p2 1024MB for /system : Do fdisk, new primary partition p3 256MB for /vendor : Do fdisk, new primary partition p4 remainings for /data : Do fdisk, mkfs.ext4 Set volume label of /data partition as userdata : use -L option for mkfs.ext4, and -n option for mkfs.vfat

需要注意的是:

1.对于启动分区P1, 同伙t命令更改分区类型 W95 FAT32(LBA) ,a设置成bootable。

2.在划分分区以及格式化分区的时候,需要先umount分区

2.分区格式化

利用如下命令格式化以及重命名分区

$ sudo mkfs.vfat -n "boot"/dev/sdb1

$ sudo mkfs.ext4 -L "system" /dev/sdb2

$ sudo mkfs.ext4 -L "vendor" /dev/sdb3

$ sudo mkfs.ext4 -L "data" /dev/sdb4

3.利用dd刷写分区

$ cd /out/target/product/rpi4

$ sudo dd if=system.img of=/dev/sdb2 bs=1M

$ sudo dd if=vendor.img of=/dev/sdb3 bs=1M

4.拷贝kernel启动配置和ramdisk镜像到启动分区(P1分区)

a.挂载boot分区

sudo mkidr /media/test

sudo mount -t fat /dev/sdd1 /media/test

b.复制boot分区文件

$ sudo cp -r device/arpi/rpi4/boot/* /media/test

$ sudo cp kernel/arpi/arch/arm/boot/zImage /media/test/

$ sudo cp kernel/arpi/arch/arm/boot/dts/bcm2711-rpi-4-b.dtb /media/test/

$ sudo cp kernel/arpi/arch/arm/boot/dts/overlays/vc4-kms-v3d-pi4.dtbo /media/test/overlays

$ sudo cp out/target/product/rpi4/ramdisk.img /media/test

  1. 系统启动 把SD卡插入到树莓派,等待几分钟启动,启动后如下画面,就这????

应用就这两个,接上鼠标和键盘也能点击响应,没有其他应用。。。

  1. adb的连接 自行安装adb工具,完成后,发现USB方式并不能连接上。进行网络连接

adb connect xxx.xxx.xxx.xxx(ip address)

adb shell

  1. 参考资料 Building Android for the Raspberry Pi

https://www.youtube.com/watch?v=gPMfzgLUtKk

树莓派4编译android13 https://github.com/android-rpi/device_arpi_rpi4

树莓派Android10源码

https://blog.csdn.net/liudi_ly/article/details/108990335

清华大学镜像 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

Android代号、标记和 build https://source.android.com/docs/setup/about/build-numbers?hl=zh-cn#source-code-tags-and-builds

Repo的用法总结 https://blog.csdn.net/qq_40163418/article/details/119144557

Android 系统的分区介绍

https://blog.csdn.net/Jason_Lee155/article/details/131701975

linux设备驱动程序——设备树(0)-dtb格式

https://zhuanlan.zhihu.com/p/639404934

linux 分区工具fdisk

https://baijiahao.baidu.com/s?id=1653747641668663333&wfr=spider&for=pc

使用mkfs命令格式化磁盘分区

https://www.python100.com/html/61079.html

Linux磁盘管理——分区+挂载

https://blog.csdn.net/weixin_53946852/article/details/125923006

dd命令解析

https://blog.csdn.net/lihuarongaini/article/details/101298572

lan-ct commented 9 months ago

QQ截图20231219111022

lan-ct commented 9 months ago

https://github.com/android-rpi/device_arpi_rpi4

lan-ct commented 9 months ago

QQ截图20231219134516

lan-ct commented 9 months ago

QQ截图20231219140834

lan-ct commented 9 months ago

https://github.com/android-rpi/device_arpi_rpi4

lan-ct commented 9 months ago

https://www.cnblogs.com/beansoft/p/15383080.html

lan-ct commented 9 months ago

https://blog.csdn.net/weixin_44991673/article/details/108962549

lan-ct commented 7 months ago

ifconfig eth0 192.168.1.128 netmask 255.255.255.0 up

lan-ct commented 7 months ago

https://www.cnblogs.com/matd/p/17140331.html

lan-ct commented 7 months ago

cd /sys/class/gpio/gpio echo 11 > export echo out 11 > direction echo 1 > value echo 0 > value echo 11 > unexport

lan-ct commented 7 months ago

// 11 12 (前) 15 16(后) cd /sys/class/gpio/gpio echo 11 > export

cd gpio17 echo out > gpio11/direction

echo 1 > gpio11/value echo 0 > value echo 17 > unexport