0%

编译环境

  • 主板: OrangePi-3b
  • 芯片: RK3566
  • 环境: Debian(12-x86_64) + Docker(Debian:12)

内容说明

买了这个 OrangePi 3b 之后,顺手给它配一个5寸的屏幕。

淘宝里面找到一款设计给树莓派使用的屏幕,刚好 OrangePi 3b 的打孔位置和这个屏幕完全匹配,所有果断入手。

屏幕链接:https://item.taobao.com/item.htm?id=627655701617

但是,这块屏实测默认只有香橙派的 Android 固件能够点亮它,其他的都不能直接点亮(LCD 屏通常需要特殊适配),不过至少也证明硬件是可以兼容的。

这就来适配一下。

阅读全文 »

编译环境

  • 主板: OrangePi-3b
  • 芯片: RK3566
  • 环境: Debian(12-x86_64) + Docker(Debian:12)

内容说明

搞了这么久,U-BootKernelRootFS 这三大件基本已经搞出来了,接下来的目标就是适配各种特殊硬件。

比如我给这个香橙派配了一个屏幕,使用 MIPI 接口的。目前还是点不亮的,接下来就是来适配这个。

这一篇文章主要是记录一下之前使用到的编译环境,方便今后快速调用。

阅读全文 »

编译环境

  • 主板: OrangePi-3b
  • 芯片: RK3566
  • 环境: Debian(12-x86_64) + Docker(Debian:12)

构建方式

一般嵌入式系统构建根文件系统会使用 buildroot 这个项目,构建的根文件系统足够小。但这个项目构建根文件系统时严重依赖外网, 导致编译过程很慢。

为了能够使用包管理器安装各种软件包,也可以选择基于强大的 Debian 来构建根文件系统。

构建可以分为两部分,分别是构建 rootfs 文件系统和构建 initramfs 文件系统。前者是 Linux 发行版,后者给 Kernel 作为 ramfs 使用。

个人理解 initramfs 的主要作用是方便在挂载真正的根分区时执行一些用户空间的操作,比如磁盘检查等操作,还是很有必要存在的。

阅读全文 »

编译环境

  • 主板: OrangePi-3b
  • 芯片: RK3566
  • 环境: Debian(12-x86_64) + Docker(Debian:12)

内容说明

U-Boot 搞到差不多了,现在转战 Kernel

香橙派瑞芯微Kernel 都经过了一定程度的修改。

这里就直接上主线 Kernel,另外两个主要是用来对比学习。

阅读全文 »

编译环境

  • 主板: OrangePi-3b
  • 芯片: RK3566
  • 环境: Debian(12-x86_64) + Docker(Debian:12)

启动流程

通俗理解

要研究 U-Boot,就不得不学习一下芯片是如何启动的。

玩过单片机的朋友都知道,单片机中基本是一个芯片内置了 CPUMEMFLASH,单片机的内置引导程序能够直接让 CPU 调用 MEMFLASH,用户只需要将程序写入 FLASH 就能开始运行。

但是类似 RK3566 这一类芯片则不同,它们更像是PC的CPU,芯片内除了 CPU 之外只有一些额外的控制器,不能给芯片本身下载程序;需要搭配外设才能运行,最主要的有 DRAMeMMC 下挂的各种存储设备;比如 OrangePi-3b 则是外挂了一个 DDR4 内存,存储则是支持 SDCardeMMCNVME 等设备,使用的使用用户程序则是存放在这些存储设备中。

和单片机相比,RK3566 运行指令存在于外扩的各种存储设备中,这些设备不是 XIP 设备,访问它们需要经过 eMMC 控制器,并且将其指令复制到 DRAM 中再运行;同时外扩的 DRAM 规格也各不相同,芯片难以在内嵌固件中初始化这些设备;现代芯片还需要支持芯片级的加密支持,这些任务组合在一起很难由片内固件和 SRAM 来完成(也有可能是兼容之前的方案故意为之,毕竟之前由于工艺和成本的原因,很难在片内集成大容量的 FLASHSRAM)。

XIP:eXecute In Place,即芯片内执行,指应用程序可以直接在 FLASH 闪存内运行,不必再把代码读到系统 DRAM 中。FLASH 内执行是指 NOR FLASH 不需要初始化,可以直接读取 FLASH 中的指令。

阅读全文 »

介绍

Orange Pi 3B 采用了瑞芯微 RK3566 四核64位处理器,22nm 先进工艺,主频最高可达 1.8GHz,集成 ARM Mali G52 2EE 图形处理器,支持 OpenGL ES 1.1/2.0/3.2OpenCL 2.0Vulkan 1.1,内嵌高性能 2D 加速模块;内置 0.8Tops 算力的 AI 加速器NPU,支持 Caffe/TensorFlow/TFLite/ONNX/PyTorch/Keras/Darknet 等主流架构模型的一键转换;VPU可实现 4K@60fps H.265/H.264/VP9 视频解码和 1080P@100fps H.265 视频编码,1080P@60fps H.264 视频编码,支持 8M ISPHDR;拥有 2GB/4GB/8GB(LPDDR4/4X),支持 16GB/32GB/64GB/128GB/256GB 的eMMC模块、支持 16MB/32MB SPI Flash,具有 Wi-Fi5、BT5.0,支持 BLE

Orange Pi 3B 引用了相当丰富的接口,包括 HDMI输出M.2 M-KEY(可选)、TF卡槽千兆网口USB2.0USB3.03.5mm耳机插孔MIPI DSI接口eDP接口MIPI CSI摄像头接口多功能40 Pin扩展接口 等,可广泛适用于电视盒子、高端平板、边缘计算、人脸识别、智能安防、智能家居等领域,赋能丰富的AI应用和物联网场景。

阅读全文 »

报错日志:

Traceback (most recent call last):
  File "/home/liux/projects/android_lineage/.repo/repo/main.py", line 56, in <module>
    from subcmds.version import Version
  File "/home/liux/projects/android_lineage/.repo/repo/subcmds/__init__.py", line 35, in <module>
    mod = __import__(__name__,
          ^^^^^^^^^^^^^^^^^^^^
  File "/home/liux/projects/android_lineage/.repo/repo/subcmds/help.py", line 20, in <module>
    from formatter import AbstractFormatter, DumbWriter
ModuleNotFoundError: No module named 'formatter'
阅读全文 »

关闭

reg add HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32 /ve /d “” /f

开启

reg delete “HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}” /f

定位方式简介

Android 的定位系统是一套用于获取设备地理位置信息的软件和硬件组件,它允许应用程序和服务访问设备的位置信息数据。按照定位原理分类, 主要有以下的几种定位方式:

  • GNSS定位
    全球导航卫星系统(GNSS)是一种使用卫星信号来确定设备精确地理位置的技术,Android 设备设备通常配备了GNSS接收器,可以通过计算卫星信号来获取经度和纬度坐标。这种定位手段可以不需要接入网络,一般用于户外位置获取。GNSS 是美国的GPS、欧盟的GALILEO、俄罗斯的GLONASS和中国的北斗导航系统等的统称。
  • 蜂窝网络定位
    这种方法使用移动蜂窝网络基站的信息来估算设备的位置,通常可以提供较粗略的位置信息。基站数据量大,定位时需要将基站信息上传到服务器获取基站位置信息,然后计算出设备的位置。
  • Wi-Fi定位
    Android 设备可以扫描周围的 Wi-Fi 网络,并根据已知 Wi-Fi 热点的位置信息和信号强度来估算设备的位置。 Wi-Fi 定位通常用于室内和城市环境中。
  • 蓝牙定位
    在一些特定的应用程序中还会使用蓝牙定位,通过扫描附近的特殊蓝牙基站设备来计算设备的位置。这种方法通常用于室内导航,会在室内布置一定数量的蓝牙基站。
  • 传感器融合定位:
    利用设备自带的陀螺仪、加速度计和磁力计等传感器,可以提高定位准确度。常见应用场景如行车导航,在卫星信号不良的情况下利用传感器进行惯性导航。
阅读全文 »

背景

服务器的 PostgreSQL 实例通过 docker-compose 运行在 docker 环境中, 使用的官方镜像;

PostgreSQL 发布了 16 的版本, 兴冲冲的修改镜像ID准备升级, 运行后报错:

2023-10-11 16:34:29.913 CST [1] FATAL:  database files are incompatible with server
2023-10-11 16:34:29.913 CST [1] DETAIL:  The data directory was initialized by PostgreSQL version 15, which is not compatible with this version 16.0 (Debian 16.0-1.pgdg120+1).

数据库数据分版本, 不同主要版本之间不兼容;

阅读全文 »