㈠ 一 . 树莓派A20 基本环境搭建 1
我的实验环境:
1.交叉编译工具链:gcc-linaro-arm-linux-gnueabihf-4.8-2014.04_linux(4.8.2).tar.xz
2.SDK文件:MarsBoard-A20-Linux-SDK-V1.1.tar.bz2
在安装gcc-arm-linux-gnueabi的时候,会自动安装上gcc-4.6-arm-linux-gnueabi,如下图所示:
第二个文件的安装很重要,尽管后面提示的编译错误,缺少的是arm-linux-...,但是安装这个文件还是挺好用的。
根据前面安装的一些安装包,其实本节的交叉编译工具链可以不用操作。因为已经包含了本节所做的了。
我得先将vim改一下,否则按住上下左右,会出现A,B,C,D。
再/etc/profile最后一行添加内容:
然后:
这里做一些简要的说明,在网址: 链接 上有一些说明,从说明中,我们可以看到我们用的sdk的架构。
pack文件夹
选择2,server版本。
之后:
能找到的livesuit_marsboard_a20_debian.img就是生成的镜像文件。如果要修改名字,可以:
这里面就包含了image.cfg,找到里面的一项:
修改为其他的名字即可。
选择2,server版本。
1.若出现如下报错:
可以:
如果出现:
但是其实这些文件都是有的,可以不妨:
再次编译,则问题如下:
仔细找编译的shell输出文件,发现是rootfs/下的gz文件找不到,这是因为我做前面的操作的时候,希望生成自己的rootfs_my.tar.gz文件。现在我重新将该文件放到rootfs/下,再次编译,我将最后的结果放在下面:
这样表示成功了。
下面列入生成的镜像:
livesuit_superpi3.img即是。
1.我在做上面的操作的时候,夹杂的使用了两个开发板,一个是marsboard出品的a20开发板,另外一个是风火轮出品的a20树莓派3卡片电脑,说实在的,看起来风火轮附带板子资料挺多,但是其真正写的资料可没用心做,实在不是一个榜样,在该开发板上做非核心开发,是可以的,但是做研发,还是需要做考量。
烧写成功后,打印的内容如下,作为日志信息,留作以后分析:
㈡ x86 平台编译的二进制包是否都不能运行在树莓派中
firmware:树莓派的交叉编译好的二进制内核、模块、库、bootloader
linux:内核源码
tools:编译内核和其他源码所需的工具——交叉编译器等
我们只需要以上三个文件即可,下面的工程可以了解一下
documentation:树莓派离线帮助文档,教你如何使用、部署树莓派(树莓派官方使用教程)
userland:arm端用户空间的一些应用库的源码——vc视频硬浮点、EGL、mmal、openVG等
hats:Hardware Attached on Top,树莓派 B+型板子的扩展板资料
maynard:一个gtk写成的桌面环境
scratch:一个简易、可视化编程环境
noobs:一个树莓派镜像管理工具,他可以让你在一个树莓派上部署多个镜像
weston:一个应用程序
target_fs:树莓派最小文件系统,使用busybox制作
quake3:雷神之锤3有线开发源码firmwareb
2)下载方法:
a、网页直接下载:
点到所需要下载的工程,左上角选版本,右方有一个download ZIP按钮可直接下载(笔者下载完成后,在linux中解压提示出错,windows又非常慢切内核建议不要在windows环境解压,所以笔者不建议使用这种办法)
b、使用git下载
$ mkdir raspeberrypi_src
$ cd raspberrypi_src
$ git clone git://github.com/raspberrypi/firmware.git
$ git clone git://github.com/raspberrypi/linux.git
$ git clone git://github.com/raspberrypi/tools.git
会得到三个文件夹:
firmware linux tools
2、编译、提取内核及其模块
1)获得内核配置文件
在运行的树莓派中运行:
$ls /proc/
可看到一个叫config.gz的文件,他是当前的树莓派配置选项记录文件,我们将他拷出,放入我们的内核源码目录树下
$cp /proc/config /home/pi
我们这里使用前面交过的samba拷出并拷入内核源码目录下,不熟悉的人可参考前面文章
在linux内核源码下执行:
$zcat config.gz > .config
2)配置、编译内核
a、修改内核源码makefile ARCH类型和编译器路径
$vi Makefile +195
找到以上类似代码,改为如图所示
b、查看、修改配置选项
$make menuconfig
可出现以下界面
如果不做修改,直接选中exit即可(注意使用键盘操作)
c、编译内核镜像
$make
在arch/arm/boot目录下可以看到一个叫zImage的文件,就是我们新的内核
但是树莓派需要另外一种格式的镜像,需要进行处理一下,执行以下命令
$cd tools/mkimage
$./imagetool-uncompressed.py ../../linux/arch/arm/boot/zImage
即可在当前文件夹下看到一个叫:kernel.img的文件,就是我们需要的新内核了
d、提取moles
上一步其实不但编译出来了内核的源码,一些模块文件也编译出来了,这里我们提取一下
$cd raspberrypi_src
$mkdir moles
$cd linux
$ make moles_install INSTALL_MOD_PATH=../moles
即可在moles得到我们需要的模块文件
2、升级RPi的kernel、Firmware、lib
将SD卡拔下插在电脑上(可使用读卡器)
1)升级内核
将新编好的内核拷入SD卡,改名为:kernel_new.img
打开boot目录下
找到config.txt文件,加入:kernel=kernel_new.img这一行
2)升级boot
将firmware/boot/目录下 以下文件拷入SD卡boot目录:fbootcode.bin fixup.dat fixup_cd.dat start.elf
3)更新vc库及内核moles
将第3步d步中编译出来的moles/lib/moles拷入树莓派文件系统/lib下
㈢ 如何将android linux烧到Raspberry Pi及其调试
一.Raspberry Pi入门向导。
可以在以下地址下载Raspberry向导
2.构建android framework
命令如下:
cd <your_android_path>
source build/envsetup.sh
lunch
显示lunch菜单如下:
You’re building on Linux
Lunch menu… pick a combo:
1. full-eng
2. full_x86-eng
3. simulator
4. full_rpi-eng
5. cyanogen_generic-eng
6. cyanogen_rpi-eng
选择第6个菜单。
然后进行编译
make -j8
等待编译成功,这可能需要几十分钟。
编译成功之后将”system”目录复制到root目录下,接下来我们可能会用到。
命令如下:
cd <your_android_path>
cp -r system out/target/proct/rpi/root
ps:编译时如果jdk版本不对,可将其改成jdk1.6
五.如何在Raspberry Pi上跑android linux内核?
1.准备一张存储空间2G以上的SD卡及相应读卡器。
2.下载arch linux镜像文件
用wget工具下载镜像文件:
wget http://files.velocix.com/c1410/images/archlinuxarm/archlinux-hf-2012-09-18/archlinux-hf-2012-09-18.zip
解压:
unzip archlinux-hf-2012-09-18.zip
成功之后,你会在当前目录下发现一个镜像文件。
3.烧linux镜像文件。
sudo dd bs=4M if=archlinux-hf-2012-09-18.img of=/dev/sdb
sudo sync
ps:/dev/sdb是SD卡在主机上的设备文件。不同的电脑可能不同。
4.用android linux内核代替这个内核。
做完上述步骤之后,当你把SD卡插在电脑上,你会发现有两个分区:一个是引导区,另一个是文件系统区。
用android linux内核代替引导区的kernel.img。
cp -uv <your_android_linux_path>/arch/arm/boot/zImage <your_sdcard_boot_partition>/kernel.img
5.用android linux文件系统代替这个linux文件系统
rm -rf <your_sdcard_file_system_partition>
cp -r <your_android_source_code_path>/out/target/proct/rpi/root/* <your_sdcard_file_system_partition>
6.配置内核命令行cmdline.txt
Edit the <your_sdcard_boot_partition>/cmdling.txt, and replace “init=/…” with “init=/init”
7.做完这些之后就可以在Raspberry Pi上跑这个android linux内核。
六.如何为Android linux做一张可引导的SD卡
1.删除已有分区,如果没有就不用删了。
Command(m for help):p
Disk /dev/sdb: 15.7 GB, 15707668480 bytes
64 heads, 32 sectors/track, 14980 cylinders, total 30668085 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0×00000000
sudo fdisk/dev/sdb
Command(m for help):d
Partition number(1-4):1
Command(m for help):d
Selected partition 2
Command (m for help): p
Disk /dev/sdb: 15.7 GB, 15707668480 bytes
64 heads, 32 sectors/track, 14980 cylinders, total 30679040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0×00000000
Device Boot Start End Blocks Id System
Command(m for help):w
ps:确定删除之后,卸掉SD卡,然后再装上。
以bytes问单位记下SD卡的大小。后面的步骤会用到。
然后进入”Expert mode”。
Command(m for help):x
将这个SD卡设置为255个磁面,63个扇区和磁柱数量(不同的SD/mmc卡有着不同的此柱数量)
Expert command (m for help): h
Number of heads (1-256, default 64): 255
Expert command (m for help): s
Number of sectors (1-63, default 32): 63
ps:在下一步开始前,先要计算磁柱数量,计算过程如下:
B:SD卡以bytes为单位的大小(前面已经记住了即:15707668480)
C:磁柱的数量
C=B/255/63/512
例如:我的SD卡大小是16G(15707668480)
C=15707668480/255/63/512=1909.68191721,约等于1909.
Expert command (m for help): c
Number of cylinders (1-1048576, default 14980): 1909
Expert command (m for help): r
2.新建分区
如果你的SD卡已经分区,请按照上述步骤删除分区。接下来,我们将创建两个分区,一个是引导区,用来存放内核镜像等文件;另一个文件系统区存放android linux文件系统。
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
Using default value 1
First sector (2048-30679039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-30679039, default 30679039): +128M
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): c
Changed system type of partition 1 to c (W95 FAT32 (LBA))
Command (m for help): a
Partition number (1-4): 1
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (1-4, default 2):
Using default value 2
First sector (264192-30679039, default 264192):
Using default value 264192
Last sector, +sectors or +size{K,M,G} (264192-30679039, default 30679039):
Using default value 30679039
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: If you have created or modified any DOS 6.x
partitions, please see the fdisk manual page for additional
information.
Syncing disks.
ok,分区成功,现在我们有两个分区,接下我们对分区进行格式化。
3.格式化分区
对引导区进行格式化:
sudo mkfs.msdos -F 32 /dev/sdb1 -n BOOT
mkfs.msdos 3.0.12 (29 Oct 2011)
对文件系统区进行格式化:
sudo mkfs.ext3 /dev/sdb2 -L ROOTFS
mke2fs 1.42 (29-Nov-2011)
Filesystem label=ROOTFS
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
950976 inodes, 3801856 blocks
190092 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=3896508416
117 block groups
32768 blocks per group, 32768 fragments per group
8128 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208
Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
4.设置引导区
引导区必须包含以下文件,你可以从官方镜像里获取(bootable/fat32 partition)也可以从书面步骤中复制过来:
bootcode.bin:第二阶段的引导程序,
loader.bin:第三阶段的引导程序,
start.elf:GPU二进制固件映像,
kernel.img操作系统的内核镜像文件,
cmdline.txt:传递给内核的参数.
5.设置root文件系统分区
ROOTFS分区包含android文件系统,是从<your_android_framework_path>/out/target/proct/rpi/root复制过来的。
cp -r <your_android_framework_path>/out/target/proct/rpi/root/* /media/ROOTFS/
6.完成上述步骤之后,将其放在Raspberry Pi上跑。
七.如何在Raspberry Pi使用adb?
1.查看网络
当android linux在Raspberry Pi运行时,切换到控制台,执行以下命令:
ifconfig eth0
记下ip地址。
如果不能找到ip,可以输入以下命令:/system/xbin/dhcp-eth0,来启动网络连接程序。
ps:如果屏幕没有显示控制台,只要按CTRL+ALT+F2即可切换到控制台。如果你想要切换到Android界面,只要按CTRL+ALT+F7即可。
2.远程连接adb服务器
在主机上执行以下命令即可与同一局域网的Raspberry Pi相连
adb connect ip
连接成功后,你就可以用adb工具输出日志,执行shell命令等。
3.也可以用数据线连接主机,直接在主机上调试。
进入调试的命令为:
screen /dev/ttyUSB0 115200
名词解释:
交叉编译(cross compile):交叉编译呢,简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓 平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。
㈣ 在鸿蒙(OHOS3.0)编译框架中添加树莓派4B
之前在树莓派4b上点亮了OHOS3.0,不过内核是用tftp拉取的,根文件系统挂在了NFS上,拔了网线就无法启动。当然这么操作只是为了方便调试,而最终需要的是一个可以烧录到TF卡上的img镜像文件。这就需要将所有调试好的内容添加到OHOS3.0的编译框架,本以为是很简单的事情,好家伙,整了这么久,感觉添加编译框架比移植本身更复杂。于是我整理了添加树莓派单板到编译框架的内容,希望对各位有所帮助,为大家避坑。
主要参考 hisilicon build组件仓,添加一个procts编译组件,这个组件是在产品配置文件中指定的。比如
proctdefinecommonproctsRPI4B.json
其他部分参考Hi3516,但是其中2条,指定单板组件路径,并添加组件。如果删除这两条,将不能编译内核,只生成OHOS的文件系统。
接下来在device目录下,新建一个raspberrypi编译组件文件夹,并添加 ohos.build 文件。和前面产品配置文件中的设置对应起来了。
deviceraspberrypibuildohos.build
新建 deviceraspberrypibuildBUILD.gn 当然每个厂家不可能只有1个板子,如果有其他单板就在这里指定,比如树莓派2B、3B等
既然前面指定了rpi4b的编译配置组件,那么就在 deviceraspberrypi 新建一个 rpi4b 的目录,可以参考 hi3516dv300 build组件
deviceraspberrypirpi4bBUILD.gn
至此一个rpi4b build组件就添加到OHOS3.0的编译框架了,之后相关内容添加到这个文件夹下就可以了。
接下来分析下目前移植了树莓派4B的哪些内容,如何将这些内容编译进OHOS3.0。
关于补丁可以参考 Patch组件,可以得知内核编译由kernel.mk来执行
kernellinuxbuildkernel.mk
所以补丁文件需要放到正确的路径下,以正确的名字命名就可以patch到内核。
hdf.patch补丁文件,现在还没有移植HDF相关内容,所以可以先使用Hi3516的
rpi4b.patch补丁文件,使用树莓派的官方镜像,https://github.com/raspberrypi/linux
kernellinuxconfiglinux-5.10archarmconfigsrpi4b_standard_defconfig
内核配置文件目前已知的需要开启下面内容,但是肯定不止这些,以后会继续更新
Pi4的GPU是VideoCore VI支持OpenGL ES 3.2,而Pi3的GPU是VideoCore IV支持OpenGL ES 2.0。VideoCore IV 驱动程序是 VC4,VideoCore VI 驱动程序的 V3D。内核已经提供驱动,参考rpi4b_standard_defconfig将驱动直接编入到内核。
同时需要在config.txt中开启设置
OHOS中修改weston的配置文件,指定显示驱动
systemetcweston.ini
具体思路就是先查找设备号,根据设备号找到驱动程序。
前面内核配置的时候rpi4b_standard_defconfig中已经将触摸驱动编入内核,所以后面不需要在init加载模块了,修改下eudev的配置文件即可。
third_partyeudevrules.d ouchscreen.rules
正常情况下内核是由uboot进行引导的,而且OHOS默认生成uImage。但是树莓派自带BootLoader,虽然可以先用树莓派自带的BootLoader启动uboot,再用uboot加载uImage,但是这样会比较麻烦,而且会增加启动时间。不过目前 zImage是写死在kernel.mk中的,没办法改下编译脚本把。
kernellinuxbuildkernel.mk 将 uImage 改为 zImage moles dtbs
kernellinuxbuildbuild_kernel.sh
kernellinuxbuildBUILD.gn
kernellinuxbuildkernel_mole_build.sh
这里内核编译会依赖proct_path="vendor/$proct_company/$proct_name"下的hdf.hcs文件,得先新建一个应付下,不然会报下面这个错误。
ninja: error: '../../vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs', needed by 'gen/drivers/adapter/uhdf2/hcs/hdf_default.hcb', missing and no known rule to make it
新建:vendor/raspberrypi/RPI4B/hdf_config/uhdf/hdf.hcs
对于镜像烧录,Hi3516会将uImage、system.img、vendor.img等镜像烧写到emmc,但是树莓派使用TF卡启动,所以需要对TF卡进行分区,然后复制对应的内容到各个分区。首先制作树莓派boot目录,这个用来目录存放树莓派设备树、config.txt、cmdline.txt、内核镜像等信息。写一个简单的mkboot.py脚本来实现这个功能,位置在码仓.py将会生成boot.img。
为了方便烧录,需要将boot.img、system.img、updater.img、vendor.img、userdata.img合并成一个rpi4b.img。还是写一个简单的脚本来处理这个步骤.py。
不过有个问题,主分区只支持4个,所以updater.img暂时先不合并了,这个问题等以后再来处理。
最后将会得到一个rpi4b.img的镜像文件,将这个文件烧录到SD卡就可以了。
Linux:可以使用dd命令
windows:使用Win32 Disk Imager工具烧录即可。
到这里总算是跑通了一个完整的添加新单板的流程,只不过目前只适配了显示和触摸。接下来打算尝试HDF或者distributed部分。
㈤ 学习树莓派上编程的时候,需要哪些教程
树莓派教程(持续更新)网络网盘免费资源在线学习
链接: https://pan..com/s/1PuxuAIN8dV37G5E2n33pCA
树莓派教程(持续更新) 中谷教育-python视频教程(完整版)
游戏镜像 微雪5寸显示器config 树莓派详细资料 视频教程 镜像 Voice kit语音工具包镜像 Etcher-Setup-1.4.4-x86镜像烧录工具.
exeaiyprojects-2018-04-13.img.xz 开启SSH-raspbian-stretch.zip ubuntu-mate-16.04.2-desktop-armhf-raspberry-pi.img.xz StickyFingers-Kali-Pi-armhf-180923.img.xz recalboxOS-4.0.0-beta5.zip 2018-11-13-raspbian-stretch.zip
㈥ 如何在pc上搭建树莓派开发环境_树莓派搭建服务器可以实现什么
树莓派用python来进行编程。树莓派项目的一个核启宴扮心思祥咐想是Python编程语言的使用。Python允许树莓派的拥有者将项目扩展到令人难以置信的规模。Python是一个解释型的面向对象的、跨平台的编程语言。良好的可靠性、清晰的语法和易用性,使它成为最流行的编程语言之一。Python是一个优雅的、功能强大的语言。
RaspberryPi系统用的是ARM架构的Linux,Linux上的大部分编程语悄灶言如GNUC/C,Java,Python,Perl,PHP都能用,.Net本来就不支持Linux,不过说不定非官方的Mono会支持ARM。
㈦ 树莓派Linux内核编译选项如何开启TPM 2.0
本文更新于2018-08-11
首发于, 文章链接 http://www.jianshu.com/p/174844b99716
同步至GitHub: https://github.com/liuqun/linux/wiki
定制树莓派内核源码, 通过树莓派SPI接口加载并访问TPM2.0设备
所需硬件: X86主机一台, 树莓派3-B型号开发板一块, 大容量Micro-SD卡+USB读卡器一个, 英飞凌TPM2.0评估板一套
所需软件: 任意版本树莓派固件(推荐使用 最新版本 ), Ubuntu Linux 虚拟机, gcc-arm-linux-gnueabihf 交叉编译器, libncurses5(编译Linux内核配置菜单界面)
取出树莓派的SD卡, 通过读卡器插入 Ubuntu 主机或将读卡器 USB 设备接入 VMware 虚拟机。Ubuntu 默认自动将 U 盘挂载到 /media/$USER/boot 和 /media/$USER/【根文件系统分区】
(以下为覆盖式安装, 如果不放心请自行备份SD卡上的原有内核及模块文件)
选中 5. Interfacing Options --- P4 SPI(启用/禁用SPI串口)
重启树莓派,开机后检查/dev/tpm0设备文件是否已经加载就绪