1.Linux 应用案例开发手册——基于Xilinx Zynq-7010/7020工业开发板
2.小白自制Linux开发板 :Linux内核与文件系统移植
3.androidåLinuxçåºå«ï¼
Linux 应用案例开发手册——基于Xilinx Zynq-7010/7020工业开发板
开发案例说明
开发案例位于产品资料“4-软件资料\Demo\tl-linux-application\”路径下的驱动驱动 base-demos 和 python-demos 目录。base-demos目录提供Linux常用开发案例,程序程序案例bin目录存放可执行文件,源码案例src目录存放源码。驱动驱动python-demos目录提供Python开发案例,程序程序脚本文件无需编译,源码云黑建站源码可直接运行。驱动驱动测试板卡是程序程序基于Xilinx Zynq-系列XC7Z/XC7Z高性能低功耗处理器设计的异构多核SoC工业级核心板。
若需重新编译Linux常用开发案例,源码请将对应案例src目录复制到Ubuntu工作目录下,驱动驱动进入src目录执行命令加载PetaLinux环境变量,程序程序并执行make命令进行案例编译。源码编译完成后,驱动驱动将在当前目录下生成可执行文件。程序程序
Linux常用开发案例包括tl_led_flash、源码bbss源码tl_key_test和tl_can_echo等。
tl_led_flash案例功能是通过向评估底板用户指示灯LED设备节点反复交替写入1、0数值,实现LED闪烁效果。LED点亮与熄灭时间均为0.5s。程序流程示意图显示LED设备节点为“/sys/class/leds/user-ledX/”目录下的brightness。
操作说明包括将案例bin目录下的可执行程序tl_led_flash复制到评估板文件系统,并在可执行程序所在目录执行命令运行程序,即可看到评估底板LED1以0.5s的时间间隔进行闪烁。同时,串口终端打印系统全部LED设备信息和程序当前控制的LED设备信息。
关键代码包括预定义LED数组、LED亮灭操作和时间间隔。
tl_key_test案例功能是macan源码通过监听用户按键设备节点状态,检测按键事件。程序流程示意图显示用户按键设备节点为“/dev/input/event0”。操作说明包括将案例bin目录下的可执行程序tl_key_test复制到评估板文件系统,在可执行程序所在目录执行命令运行程序,串口终端将打印提示信息。再按下评估板用户按键KEY1,程序将检测到按键事件,并打印按键状态信息。
关键代码包括定义按键、监听按键事件和循环监听。
tl_can_echo案例功能使用canutils工具包的canecho程序实现CAN接口数据接收并重发功能。canutils工具包内含5个独立程序,包括canconfig、candump、renderdoc源码canecho、cansend、cansequence等。本案例仅使用canecho功能,如需实现其他功能,可自行下载canutils工具包并从中获取对应功能程序源码。操作说明包括使用USB转CAN模块连接评估板CAN接口和PC机USB接口,参照调试工具安装文档安装USB转CAN驱动和ECAN Tools调试软件,双击打开ECAN Tools软件,选择设备类型,然后点击“打开设备”。打开ECAN Tools界面,将案例bin目录下的PL端.bin格式可执行文件复制到评估板文件系统"/lib/firmware/"目录下,并执行命令加载PL端可执行文件。木兰源码进入评估板文件系统使用文件系统自带的canconfig工具设置波特率,并启动CAN接口。将案例bin目录下的可执行程序tl_can_echo复制到评估板文件系统,执行命令查看程序参数信息,绑定CAN接口并接收由ECAN Tools发出的数据,然后将接收到的数据重新发送出去。
关键代码包括使用socket监听CAN接口和将从CAN接口接收到的数据重新发送出去。
tcp_udp_demos案例主要实现客户端(client)与服务端(server)的文本数据相互收发功能。案例包含4个程序,包括tl_tcp_server、tl_tcp_client、tl_udp_server和tl_udp_client。操作说明包括将案例bin目录下的4个可执行程序复制到评估板文件系统,在Ubuntu中执行命令使用OpenSSH登陆评估板文件系统,并在可执行程序所在目录执行命令运行TCP和UDP服务端和客户端程序。程序执行后,客户端将会连接服务端或服务端和客户端程序均在评估板上运行时,可进行本地回环测试。关键代码以TCP通信程序为例,包括注意源码中的数据结构和系统调用的使用。
Python开发案例包括tl_led_flash和tl_key_test两个简单案例。操作说明包括将案例目录下的脚本文件拷贝到评估板文件系统,并在脚本文件所在目录执行命令查看程序参数信息,执行命令运行脚本程序,即可看到评估底板上的LED闪烁或检测按键事件。关键代码包括查找所有LED设备和控制LED亮灭,以及打开按键设备和监听按键事件。
以上内容为Linux应用案例开发手册——基于Xilinx Zynq-/工业开发板中的详细开发案例和操作说明。更多关于嵌入式开发的内容分享,欢迎关注Tronlong创龙科技~
小白自制Linux开发板 :Linux内核与文件系统移植
Linux内核
若要移植F1CS/F1CS至Linux,可直接利用官方源码对licheepi nano的支援。首先,访问kernel.org下载最新长支版本内核源码(建议使用5..),若使用特定版本,如5.7.1,则可直接下载对应链接。解压后,将内核源码复制至Ubuntu虚拟机。
配置编译
在Linux内核代码中找到Makefile文件,修改ARCH和CROSS_COMPILE配置为Arm,使用编译工具交叉编译。完成内核配置后,下载licheepi_nano的配置文件,放置于arch/arm/configs目录下。使用图形化配置界面完成内核与开发板soc的对应配置。
配置TF卡设备树信息
在arch/arm/boot/dts目录下修改suniv-f1cs.dtsi和suniv-f1cs-licheepi-nano.dts文件,添加相应的头文件与配置选项。确保内核编译成功,生成zImage和dtb文件。
TF分区配置
通过Gparted软件分区,将TF卡分为两个分区,一个用于存放zImage、dtb文件,另一个用于根文件系统。格式化为fat和ext4,确保正确分配分区大小并保存配置。
内核复制与执行
将内核文件复制至TF卡的BOOT分区,插入开发板后,通过u-boot启动并自动进入内核启动环节。确保TF卡根文件系统正确挂载。
文件系统移植
使用Buildroot制作根文件系统,选择目标选项、编译选项、工具链与系统配置,确保文件系统兼容并能正常挂载。构建完成的根文件系统镜像解压至TF卡第二分区。
执行与升级
登录自制Linux系统,通过修改/etc/profile文件调整命令行显示。运行GPIO实验,利用Linux GPIO子系统实现LED灯的点灯功能,探索Linux内核的驱动实现。
总结
完成了Linux内核与文件系统的移植,从内核配置到文件系统挂载,再到驱动实验,逐步实现自制Linux开发板的操作系统。后续将升级硬件设备并进行更有意义的项目开发,期待你的进步。
androidåLinuxçåºå«ï¼
æ以ä¸ä¸ç¹åºå«ï¼1ãAndroid没ææ¬å°çªå£ç³»ç»ï¼èLinuxæ¯æXçªå£ç³»ç»ã
2ãAndroid没æglibcæ¯æï¼èLinuxæ¯æglibcæ¯æçã
3ãAndroidæ¯æèªå·±ä¸æç驱å¨ç¨åºã
è½ç¶AndroidåºäºLinuxå æ ¸ï¼ä½æ¯å®ä¸Linuxä¹é´è¿æ¯æå¾å¤§çå·®å«ã
æ©å±èµæ
Androidä¸æç驱å¨ç¨åº
1ãAndroid Binder åºäºOpenBinderæ¡æ¶çä¸ä¸ªé©±å¨ï¼ç¨äºæä¾ Androidå¹³å°çè¿ç¨é´éä¿¡(InterProcess Communicationï¼IPC)åè½ãæºä»£ç ä½äºdrivers/staging/android/binder.cã
2ãAndroidçµæºç®¡ç(PM) ä¸ä¸ªåºäºæ åLinuxçµæºç®¡çç³»ç»çè½»é级Androidçµæºç®¡ç驱å¨ï¼é对åµå ¥å¼è®¾å¤åäºå¾å¤ä¼åãæºä»£ç ä½äºï¼
kernel/power/earlysuspend.c
kernel/power/consoleearlysuspend.c
kernel/power/fbearlysuspend.c
kernel/power/wakelock.c
kernel/power/userwakelock.c
3ãä½å å管çå¨(Low Memory Killer) æ¯Linuxçæ åçOOM(Out Of Memory)æºå¶æ´å çµæ´»ï¼å®å¯ä»¥æ ¹æ®éè¦ææ»è¿ç¨ä»¥éæ¾éè¦çå åãæºä»£ç ä½äº drivers/staging/ android/lowmemorykiller.cã
4ãå¿åå ±äº«å å(Ashmem) 为è¿ç¨é´æä¾å¤§åå ±äº«å åï¼åæ¶ä¸ºå æ ¸æä¾åæ¶å管çè¿ä¸ªå åçæºå¶ãæºä»£ç ä½äºmm/ashmem.cã
5ãAndroid PMEM(Physical) PMEMç¨äºåç¨æ·ç©ºé´æä¾è¿ç»çç©çå ååºåï¼DSPåæäºè®¾å¤åªè½å·¥ä½å¨è¿ç»çç©çå åä¸ãæºä»£ç ä½äºdrivers/misc/pmem.cã
6ãAndroid Logger ä¸ä¸ªè½»é级çæ¥å¿è®¾å¤ï¼ç¨äºæåAndroidç³»ç»çåç§æ¥å¿ãæºä»£ç ä½äºdrivers/staging/android/logger.cã
7ãAndroid Alarm æä¾äºä¸ä¸ªå®æ¶å¨ï¼ç¨äºæ设å¤ä»ç¡ç ç¶æå¤éï¼åæ¶å®è¿æä¾äºä¸ä¸ªå³ä½¿å¨è®¾å¤ç¡ç æ¶ä¹ä¼è¿è¡çæ¶éåºåãæºä»£ç ä½äºdrivers/rtc/alarm.cã
8ãUSB Gadgeté©±å¨ ä¸ä¸ªåºäºæ å Linux USB gadget驱å¨æ¡æ¶ç设å¤é©±å¨ï¼AndroidçUSB驱å¨æ¯åºäºgaegetæ¡æ¶çãæºä»£ç ä½äºdrivers/usb/gadget/ã
9ãAndroid Ram Console 为äºæä¾è°è¯åè½ï¼Androidå 许å°è°è¯æ¥å¿ä¿¡æ¯åå ¥ä¸ä¸ªè¢«ç§°ä¸ºRAM Consoleç设å¤éï¼å®æ¯ä¸ä¸ªåºäºRAMçBufferãæºä»£ç ä½äºdrivers/staging/android / ram_console.cã
ãAndroid timed device æä¾äºå¯¹è®¾å¤è¿è¡å®æ¶æ§å¶çåè½ï¼ç®åæ¯ævibratoråLED设å¤ãæºä»£ç ä½äºdrivers/staging/android /timed_output.c(timed_gpio.c)ã
åèèµæï¼ç¾åº¦ç¾ç§ââAndroid
ç¾åº¦ç¾ç§ââlinux