linuxbsp
① linux下bsp开发都要干些什么工作
Android BSP, 基本可以理解为:linux 驱动 linux BSP (CPU,电源管理比驱动更深入的硬件支持包) Android HAL层 首先,熟悉linux kernel,linux driver的基本架构,熟悉C语言,懂得基本硬件知识,能看懂电路图。 其次,要熟悉linux系统编程,...
② 如何正确开发 linux bsp
简单的来说,就是针对所使用嵌入式的硬件跟操作系统 LINUX 的界面。 举例来说,输出文字到屏幕,由于所使用的屏幕不同,所以不能用同一个驱动来写软件。所以需要BSP来支援。
③ 如何在linux run bsp
要看你是跑在bootrom下,还是内核,如果两个都要,一般是放在sys下的img下.vxworks和linux不一样,不能把驱动编成一个单独的ko或者模块,它是和内核编译在一起的。在makefile和驱动调用相关函数接口进行编译和注册就可以了。
④ imx6q linux bsp中怎么读取一个寄存器的值
这一问题来自项目中一个实际的需求:
我需要在Linux启动之后,确认我指定的芯片寄存器是否与我在uboot的配置一致。
举个例子:
寄存器地址:0x20000010负责对DDR2的时序配置,该寄存器是在uboot中设置,现在我想在Linux运行后,读出改寄存器的值,再来检查该寄存器是否与uboot的配置一致。
Linux应用程序运行的是虚拟空间,有没有什么机制可以是完成我提到的这一需求。若行,还请附些测试代码。
谢谢!
这个需要用mmap()函数将寄存器物理地址映射为用户空间的虚拟地址,即将寄存器的那段内存映射到用户空间,函数介绍如下:
void*
mmap(void
*
addr,
size_t
len,
int
prot,
int
flags,
int
fd,
off_t
offset);
该函数映射文件描述符
fd
指定文件的
[offset,
offset
+
len]
物理内存区至调用进程的
[addr,
addr
+
len]
的用户空间虚拟内存区,通常用于内存共享或者用户空间程序控制硬件设备,函数的返回值为最后文件映射到用户空间的地址,进程可直接操作该地址。下面是测试代码(仅供参考):
#define
DDR2_REG_BASE
(0x20000000)
#define
MAP_SIZE
4096UL
#define
MAP_MASK
(MAP_SIZE
-
1)
static
unsigned
int
pTestRegBase;
static
int
dev_fd;
dev_fd
=
open("/dev/mem",
O_RDWR
|
O_NDELAY);
if
(dev_fd
<</SPAN>
0)
{
LOGE("open(/dev/mem)
failed.");
return;
}
pTestRegBase
=
(void
*)mmap(NULL,
MAP_SIZE,
PROT_READ
|
PROT_WRITE,
MAP_SHARED,
dev_fd,DDR2_REG_BASE
&
~MAP_MASK);
if
(MAP_FAILED
==
pTestRegBase)
{
printf("mmap
failed.
fd(%d),
addr(0x%x),
size(%d)\n",
dev_fd,
DDR2_REG_BASE,
MAP_SIZE);
}
else
{
unsigned
int
reg_value
=
*((volatile
unsigned
int
*)(pTestRegBase
+
10));
printf("reg_value
=
0xx\n",
reg_value);
munmap((void*)pTestRegBase,
MAP_SIZE);
}
pTestRegBase
=
0;
if(dev_fd)
close(dev_fd);
这里将DDR2_REG_BASE开始大小为1个page的物理地址映射到了用户空间,然后就可以用pTestRegBase作为起始地址操作寄存器了。
⑤ 在iMX8上使用MIPI-CSI摄像头
By Toradex胡珊逢
NXP i.MX8QM/QP处理器能够支持2路4 lane的MIPI CSI-2输入,每路最高为4K@30分辨率。文章接下来将使用Apalis iMX8QM计算机模块配合e-con提供的MIPI CSI-2摄像头AR0521进行演示。
E-con MIPI CSI-2摄像头 AR0521 最高像素2592 × 1944@28fps,模组集成ISP。摄像头可以直接连接 Ixora 底板,连接方式如下。线材的卡扣很精密,安装时请小心操作。同时接触摄像头模组前,务必释放上手的静电,如触摸接地设备的金属机壳。
Apalis iMX8QM的Linux BSP对摄像头提供无缝集成,只需简单的设置即可使用。这里我们使用Toradex最新的 nightly image 。由于摄像头需要使用gstreamer组件,tdx-reference-multimedia-image参考镜像包含了常用多媒体软件,该镜像可以直接用于测试摄像头。使用 Toradex Easy Installer 进行镜像安装。
安装完毕后修改计算机模块上的/boot/overlays.txt文件,通过device tree overlay启动AR0521。在overlays.txt中添加apalis-imx8_ar0521_overlay.dtbo。
关闭tdx-reference-multimedia-image开机自启动的Qt演示程序。
重启后可以看到AR0521被正确识别。
l 查看摄像头支持的格式
l 预览摄像头画面
此时可能需要旋转摄像头上镜头进行对焦,直到清晰地看到拍摄物体。
l 录制摄像
可以将test.avi视频文件复制到电脑上,使用mediainfo命令查看该文件的视频信息。
Gstreamer pipeline还可以支持zero-方式处理数据。借助zero- CPU能够使用一个element产生的数据而无需重新复制,从而有效降低CPU负荷。使用io-mode参数开启zero-,io-mode=dmabuf会使用硬件DMA。更多的说明请参考 i.MX 8 GStreamer User Guide 。
两种模式下CPU占用率从101.7%下降到10.6%。
l 播放视频文件
播放上面录制的avi视频文件
l RTP网络传输
Apalis iMX8QM作为RTP服务器
Ubuntu电脑作为客户端查看视频。上面的PC_IP为电脑的IP地址。
总结
本文简要地介绍了在Apalis iMX8QM使用MIPI-CSI摄像头的方法。不同的摄像头通常需要对应的驱动,并根据摄像头参数调整gstreamer pipeline配置,从而实现高效的采集、编解码、传输和存储。
⑥ 什么是Linux BSP
BSP是板级支持包,是介于主板硬件和操作系统之间的一层,应该说是属于操作系统的一部分,主要目的是为了支持操作系统,使之能够更好的运行于硬件主板。BSP是相对于操作系统而言的,不同的操作系统对应于不同定义形式的BSP,例如VxWorks的BSP和Linux的BSP相对于某一CPU来说尽管实现的功能一样,可是写法和接口定义是完全不同的,所以写BSP一定要按照该系统BSP的定义形式来写(BSP的编程过程大多数是在某一个成型的BSP模板上进行修改)。这样才能与上层OS保持正确的接口,良好的支持上层OS。
例如: 在VxWorks中的网卡驱动,首先在config.h中包含该网卡,然后将网卡含网卡的信息的参数放入数组 END_TBL_ENTRY endDevTbl [] 中,系统通过函数muxDevLoad( )调用这个数组来安装网卡驱动。
而在Linux中的网卡驱动,是在space.c中声明该网络设备,再把网卡驱动的一些函数加到dev结构中,由函数ether_setup()来完成网卡驱动的安装。
纯粹的BSP所包含的内容一般说来是和系统有关的驱动和程序,如网络驱动和系统中网络协议有关,串口驱动和系统下载调试有关等等。离开这些驱动系统就不能正常工作。
Tornado中BSP的编译和上层应用程序不同,用命令行或直接在Tornado环境下Build,在Tornado下不能跟踪调试。
用户也可以添加自己的程序到BSP中,但严格来说不应该算BSP.一般来说这种做法不建议。因为一旦操作系统能良好运行于最终的主板硬件后,BSP也就固定了,不需要做任何改动。而用户自己在BSP中的程序还会不断的升级更新,这样势必对BSP有不好的影响,对系统造成影响,同时由于BSP调试编译环境较差,也不利于程序的编译调试。
⑦ 嵌入式中BSP的概念是什么,比如在linux中,请通俗的讲一下,谢谢了!
BSP(Board Support Package),板级支持包,也称为硬件抽象层HAL或者中间层。
它将系统上层软件和底层硬件分离开来,使系统上层软件开发人员无需关系底层硬件的具体情况,根据BSP层提供的接口开发即可。
BSP是相对于操作系统而言的,不同的操作系统有不同定义形式的BSP,要求BSP所实现的功能也有所不同。
在嵌入式Linux系统中,主要是初始化底层硬件并引导操作系统;同时,BSP又是和硬件相关的,还要考虑对硬件的初始化操作。这些初始化操作主要是对CPU、内存、中断等相关的寄存器及协处理器进行正确的配置。
在不同的开发阶段,因为核心和文件系统所处的位置不同,BSP所要完成的工 作也有所不同;在开发调试阶段,BSP要能够与主机通信并从主机下载核心;在目标产品中,BSP要能够从非易失存储设备中加载核心。
(7)linuxbsp扩展阅读
BSP有两个特点:硬件相关性和操作系统相关性。
设计一个完整的BSP需要完成两部分工作:
A、 嵌入式系统的硬件初始化和BSP功能。
片级初始化:纯硬件的初始化过程,把嵌入式微处理器从上电的默认状态逐步设置成系统所要求的工作状态。
板级初始化:包含软硬件两部分在内的初始化过程,为随后的系统初始化和应用程序建立硬件和软件的运行环境。
系统级初始化:以软件为主的初始化过程,进行操作系统的初始化。
B、 设计硬件相关的设备驱动。