![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
嵌入式
文章平均质量分 59
fanged
这个作者很懒,什么都没留下…
展开
-
显示学习4(基于树莓派Pico) -- 游戏
Framebuffer 的 blit 方法是用于将一个区域的图像数据从一个帧缓冲区复制到另一个帧缓冲区的方法。在图形编程中,blit 是 "block transfer"(块传输)的简称,通常用于在内存中进行图像数据的复制或传输操作。可以看出,常规游戏的实现思路,就是基于2D图形的,以帧为单位,所有的逻辑操作都是基于2D的坐标体系。显示方面封装后就直接看做一块内存,逻辑处理完之后控制内存中数据的变化,最后把改动提交到显示器。进入这一帧时,首先根据按键来更新小鸟的位置,然后判断小鸟是否飞出去了。原创 2024-04-07 15:35:25 · 846 阅读 · 0 评论 -
USB UVC 3-- uvc gadget(更新中)
USB分为USB Host和USB Device两种,PC一般是USB Host,手机等终端数码设备一般是USB Device。OTG是指设备既可以作为USB Device,又可以作为USB Host。在Linux中,USB Device设备称为Gadget。这个代码是应用层的,内核将来有时间再写一篇吧。比对着一起看吧,兼听则明啊。原创 2024-05-02 01:55:51 · 310 阅读 · 0 评论 -
USB UVC 2-- libuvc
这个部分的内容就比较多,首先还是libusb_open,然后uvc_get_device_info,获取设备的具体能力,uvc_claim_if,这里申明UVC的接口。然后就是一套,libusb_get_device_descriptor,libusb_fill_interrupt_transfer,libusb_submit_transfer(是 libusb 库中的一个函数,用于将 USB 传输请求提交给 USB 设备。主要就是调用了libusb_init,应该是对usb的初始化。原创 2024-04-26 01:55:21 · 372 阅读 · 0 评论 -
USB UVC 1-- 基础
USB UVC,顾名思义,首先还是USB,整个UVC还是基于USB框架的,要真正掌握这个,还是要掌握USB的协议。然后是UVC,全称是USB Video Class,用于支持视频设备(例如网络摄像头、摄像机、扫描仪等)与计算机之间的通信和交互。首先摄像头要支持USB协议,其次要支持UVC协议,要提供符合UVC协议的设备描述符,然后是遵循UVC定义好的控制命令,多媒体格式,还有传输方式。:Realtek 是一家知名的芯片制造商,在其 RTS 系列中也有支持 UVC 的摄像头芯片。Brightness(背光)原创 2024-02-17 02:05:40 · 444 阅读 · 1 评论 -
高通平台初步
涉及到的部件主要有HLOS,MPSS(medem),aDSP&cDSP,XBL(Boot build),AOP,TZ,WLAN,BTFM,video,WiGig,VENUS,SLPI,CPE,Secure processor。前面都是开源,从TZ开始后面的都是给bin。首先是安装环境,一些常规的,主要是Ubuntu,JDK,repo,ARM交叉编译器,Python,Perl,Samba(可选)。上面的图有点小怪,主要是Libraies,Framework,App,这部分感觉应该是Google的。原创 2024-03-20 14:42:03 · 473 阅读 · 0 评论 -
显示学习2(基于树莓派Pico) -- Framebuffer
我的理解显示屏其实还是一堆LED点的组合,在内存中有映射到显示屏的显示数据,记录了每个点的详细信息,比如色彩,亮度等等的信息,这部分信息先在内存中进行预处理,处理完成后,再将这段内存送到显示器逐个点进行显示。图形的格式看起来也不少,MONO_VLSB,MONO_HLSB,MONO_HMSB,RGB565,GS2_HMSB,GS4_HMSB,GS8,每一种都要能基本了解吧。从python的接口来看,FB还提供了一些简易接口,line画线,fill_rect画矩形,text写文字。两个的功能好像有点重叠。原创 2024-02-22 22:33:53 · 125 阅读 · 0 评论 -
设备树学习(DOING)
尤其是嵌入式领域,设备多种多样,但是很多设备接口都是标准的,或者大同小异。后面linux内核就把这些做成公共库抽象出来,后面设备只需要传入“我是什么设备”,那么linux就可以从内核中公共库找到需要的驱动,避免了很多质量不一的冗余代码,而且也方便了管理。基本流程是编译前编写DTS(有一个DTSi,可以视为厂商的DTS头文件,可以提取一些共性数据),之后会通过DTC编译成DTB,通过Bootloader传给kernel。在设备树中,涉及到的文件主要是DTS,DTSI,还有DTB。3 DTS编写的规则。原创 2024-02-24 16:27:47 · 201 阅读 · 0 评论 -
BSP开发的内容
总之,BSP 是为特定硬件平台定制的软件支持包,旨在简化嵌入式软件开发过程,并为开发人员提供必要的软件基础设施和工具。:为特定硬件组件(如处理器、外设、传感器等)提供底层软件接口,允许操作系统或应用程序与硬件进行通信和控制。:可能包括操作系统内核和相应的 BSP 驱动程序,用于管理硬件资源、调度任务、提供文件系统支持等。:包括硬件规格、软件开发手册、API 文档、示例代码等,帮助开发人员理解和使用 BSP。:提供额外的软件功能和服务,例如图形界面、网络协议栈、文件系统、USB 支持等。原创 2024-03-27 01:43:26 · 257 阅读 · 0 评论 -
C的位操作
/1 4,相当于把前4个bit放到后4个bit。//此时是100,倒数第三位打开。通过上面的分析,再看mac的操作,其实就很简单了。最简单总结一下,&是清数据,|是设置数据。原创 2024-02-10 01:31:04 · 123 阅读 · 1 评论 -
make menuconfig
选项的输入是 Kconfig和config.in(2.4内核),选择完成后保存到.config文件,makefile的时候调用.config文件。从log可以看出,调用script/kconfig下面的代码,生成了mconf工具,该工具调用Kconfig生成图形界面。通过kconfig,在include下生成generated,里面包含autoconf.h,就包含了之前所有的宏定义。底层wattrset,waddch这些接口调用的是Curses Library这个库,应该是有点年纪了。原创 2024-02-03 17:40:21 · 290 阅读 · 1 评论 -
chmod小结
首先还是要明白分组的概念:u是文件所有者,也就是自己。g是所属组,也就是自己那个组。我一般用的最多的就是chmod 777 file,也就最简单的一招。参数方面,有用的就是-R,递归修改所有文件夹下所有内容。chmod -R 777 file也行,但是略显粗糙。使用数字模式要相对麻烦一点,因为必须设置其他两个组。权限分三种,分别是读r写w执行x,分别是4,2,1。chmod其实有两个方式,符号模式和数字方式。最后,在嵌入式开发领域,最常用且精准的命令就是。符号模式更精准,数字模式简单,比如777。原创 2024-02-02 00:29:27 · 370 阅读 · 0 评论 -
嵌入式Image小总结
在zimage的基础上,增加了一个头。有比如校验信息,内核入口,参数等。主要起到简化配置的作用。在每个平台上,可能会定制不同的信息。就是linux内核编译生成文件,virtual memory linux。这居然打包成一个exe,还是elf格式的。之前遇到过,过年期间整理一下。主要涉及到的内容就是VMlinux,uimage,zimage。对VMlinux打包的产物,看介绍是使用的gzip。运行时,会把image解压到内存中。看了下资料,可以通过启动gdb对VMlinux,也就是linux内核进行调试。原创 2024-01-31 02:07:42 · 83 阅读 · 0 评论 -
Tee学习(TODO)
待补充。原创 2024-02-22 22:33:13 · 81 阅读 · 0 评论 -
V4L2学习(框架和上层)
上层有什么呢:GStreamer,FFmpeg,OpenCV,v4l-utils。当然,你直接调用ioctl写一个简单的也行,也不算复杂。最近才看了下V4L2,说起来V4L2实际上是一个接口标准。使用V4L2上层接口的应用,V4L2框架,以及使用V4L2下层接口的驱动。另外要值得看的是和GStreamer之间的接口处理,等到看GStreamer的时候再写写吧。上层总的来说不算复杂,10来个接口,照着写一遍就懂了,唯一就是BUF的处理可能会麻烦点。NVIDIA的这个图说的还比较简明扼要。原创 2024-03-04 01:56:31 · 412 阅读 · 0 评论 -
DRM显示学习(TODO)
待补充。原创 2024-02-22 22:34:24 · 69 阅读 · 0 评论 -
SEAndroid学习12 -- SELinux
semanage fcontext -a -t db_service_conf_t "/etc/db_service.conf":将数据库服务的配置文件设置为 db_service_conf_t 类型。semanage port -a -t your_service_port_t -p tcp 8080:添加策略,允许类型为 your_service_t 的服务绑定到TCP端口8080。原创 2024-03-15 02:25:49 · 139 阅读 · 0 评论 -
显示学习1(基于树莓派Pico) -- 基础
最后是用的python,开发效率最高。比如poweron,poweroff,show。对于show的理解是framebuffer中进行操作,操作完成之后调用show显示。在I2C中,主要是向地址0x3C写入命令,0x80应该是命令字,后面接命令。首先是找SSD1315的驱动文件,网上看了下说SD1306的也是通用。驱动的是0.96寸的OLED,SSD1315。使用的I2C接口驱动。暂时先写到这吧,关于framebuffer,我单独写一篇。驱动中同时有I2C和SPI写命令的差异,可以看看。原创 2024-04-07 01:41:12 · 301 阅读 · 0 评论