自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 资源 (10)
  • 收藏
  • 关注

原创 C++容器工作效率-内存操作

c++容器中对于内存管理的不同实现方法以及效率的考量

2023-09-15 16:58:21 165 1

原创 百度Apollo中轨迹的表示方式

规划控制中的轨迹以及转换

2023-08-10 00:48:17 421

原创 Jetson Orin MultiMedia 使用总结

处理通过CUDA来处理,说明一点 这里的处理后的outbuf 是cudaMallocHost的分配结果,CPU和GPU可以共享,不需要额外的映射 Map的操作。首先是按照格式参数 YUV422 YUV420 YUV444等,具体按照图片的长宽来分配具体的缓存大小。pitch 多少是实际的输入参数1024对齐的结果。其他文章会详细介绍。特别需要注意的是 U V 分量开始的点 分别为 288 和 432,高 / 2 和 高度 3/4的起点。有了图片同样有了输入的缓存大小以及形状,后面就可以处理YUV的数据了。

2023-04-25 12:37:06 974

转载 gcc 优化选项 -O1 -O2 -O3 -Os 优先级,-fomit-frame-pointer(不积跬步无以至千里)

-fomit-frame-pointer 在优化时候被启用,带来了效率的提升。看到一篇比较详细记录编译选项的文章,转发一下,同时给自己作一下备忘。少优化->多优化:O0 -->> O1 -->> O2 -->> O3-O0表示没有优化,-O1为缺省值,-O3优化级别最高英文解析:`-O ' `-O1 ' Optimize. Optimizing compilation takes somewhat more time, and a

2022-07-03 01:54:34 2013

原创 Nvidia Jetson Xavier 交叉编译multimedia api

Jetson Xavier 更新Veye 摄像头的相关dtb与Image。交叉编译multimedia api。

2022-01-18 17:54:17 4890

原创 百度Apollo CyberRT 之通讯性能测试

很久没写博客了,最近有时间总结一下工作内容,顺便记录一下性能测试 – 百度Apollo Cyber_RT 6.01.1一对多的情况: 一个发送者,三个接收者。目的是保障三个接受者可以有顺序的接收,优先级高的接收者最先获取数据,以此类推。(测试数据大小为10KB)测试结果:发送者以2ms(rate(500))频率发送。接受者可以按照2ms时间间隙接收。但是接收过程会有无序,时间间隔抖动现象。大于10ms间隙后无乱序以及抖动等现象。绿色方框内:标示接收者_1 时间自上而下时间间隔大致...

2021-09-29 22:24:51 2013

原创 关于 C++ thread_local 变量理解

1,类中的方法不是所有类对象独有的。换句话说:一个类的多个对象,共享同一份类成员方法。函数是共享的。2,同一个类的多个对象,使用this区分。(类内部访问)每个类有自己的指针,构造对象时候确定。3,使用静态(static)修饰的成员方法没有this指针,可以通过XXX::xxx(域名)方式调用。问题来了:假设同一个类的多个对象,共用同一个成员方法。通过这个成员方法如何区分不同的对象?并且调用方法时static的静态方法,不需要通过指针应用等方式调用相应的对象防范。这里提一下thread_lo

2021-01-08 18:01:57 800

原创 多线程中PTHREAD_MUTEX_RECURSIVE的理解

参数PTHREAD_MUTEX_RECURSIVE表示在同一个线程中可以多次获取同一把锁。并且不会死锁。 问题来了: 1,如和测试这个参数的属性导致程序不一样的结果? 2,为什么一定要同一个线程多次获得同一把锁? 下面先看代码: #include <pthread.h>#include <stdio.h>...

2020-05-08 16:16:38 7332 2

原创 NVIDIA CUVID硬件解码 - cuvidCreateVideoSource() 捕捉rtsp流

写这篇文章是应为之前的网上很多文章分析: cuvidCreateVideoSource( )这个函数不支持一些视频流:rtsp类型过来的视频信号。 在NVIDIA的Decode实例中使用的是本地的视频文件:1080.246,720.mp4等视频文件。创建视频源用的是本地文件。 调试开发环境: 1,Jetson TX...

2020-03-18 00:01:11 5030 25

原创 Vsomeip交叉编译(AARCH64)中涉及到的boost移植

最近在做arm交叉编译,其中需要用到boost库。问题随之而来,记录一下细节以及网上文章疏忽的知识点。 1,boost中的版本不同,导致头文件中的内容也有所不同。所以当移植库使用了boost,一定要注意boost的版本。 vsomeip中使用的boost库是要求大于等于boost 1.55,随后在host为x86的主机上也使用过boo...

2019-11-29 12:59:01 6026 5

转载 C++ 左值右值,用于移动(move)和转发(forward)

    新标准重新定义了lvalue和rvalue,并允许函数依照这两种不同的类型进行重载。通过对于右值(rvalue)的重新定义,语言实现了移动语义(move semantic)和完美转发(perfect forwarding),通过这种方法,C++实现了在保留原有的语法并不改动已存在的代码的基础上提升代码性能的目的。作为一个C++0x标准的初学者,理解这些概念其实还有有一定的困难的,加上网上能...

2018-06-30 14:03:56 3114 1

原创 C++ 匿名变量的一些理解

总想总结一下,但是总是不断否定自己的理解,迟迟不能下笔。终于今天还是写下点记录和理解。运行环境:OS : Ubuntu 16.04 Desktop G++ Version:gcc version 5.4.0 20160609(Ubuntu 5.4.0-6ubuntu1~16.04.9)匿名变量:这种变量其实是程序员看不见的,是编译器为了代码正确实行,自动会在代码里面添加的内容(匿名变量)。在C语言...

2018-06-24 13:27:22 4463

原创 DMA:mem-to-mem mem-to-device device-to-mem

    换了工作,算是步入汽车行业了。汽车不同于消费类电子,使用的是"高性能单片机",尽管物理通讯方式为:can lin spi 这些相对与消费类电子比较慢速的外设,但是AutoSar规范定义的比较详细。    刚开始接触"高性能单片机"。不知道怎么定义这样的芯片,有着200MHz的主频(甚至是多核)但是没有MMU。作为单片机类型的,所以称之为:高性能单片机。(不知道怎么描述,这些芯片多数用于汽车...

2018-03-17 11:46:12 1505

原创 gcc使用---动态库链接静态库

最近自己的项目中遇到一个问题:编译一个动态库,动态库中使用了静态库的函数如下图所述

2017-02-24 16:44:24 16860 12

原创 卷积推导笔记(未整理)

笔记较为离散 以后有空再整理,这是两年前写的,一直没有整理。

2017-02-24 04:55:20 1224

原创 多线程的exit()逻辑

今天很巧再一次调试了多线程的代码。主要思想就是:通过pthread_create创建一个线程,然后通过主线程A控制创建出来的线程B,完成各种功能。video_thread(){while(){display();}exit(0);}main(){pthread_create(&video,,video_thread,);while(q

2016-10-28 05:35:01 5147 1

原创 linux内核中内存分配调用API-引起的一些思考

linux内存管理中的一些理解

2016-10-19 16:39:45 1263

原创 Mmap 实现原理和应用(流程)

在调试完达芬奇的视屏输入后记录一下调试心得。重点还是再次放在系统调用mmap后的内存分配上。做了一个mmap系统调用的笔记以及记录以备后用。大致介绍了linux中对于mmap的应用以及后续产生缺页异常处理的一个流程。由于之前的调试中一直对于vma的区域选取产生疑问,不知道vma到底是何许人也,这次有机会就直接mmap调试了。一下内容都通过log信息验证。 系统调用 mmap后SYS

2016-07-27 15:57:26 2688

原创 OMAP3 DSS 初始化过程(2)总线关系

这篇文章是对前面一片文章的补充。在文章(1)中遗漏了一些重要信息,而这些信息也是在随后的调试和修改过程中发现的。这里再做一次总结。还是那句老话,如有不足,请指出文章中错误的观点。    文章(1)中提到了omap_dss_register_device和omap_dss_register_driver这两个函数,这两个函数正是通过dss_bus总线进行配对的。在这两个函数配对之还有一个linu

2016-02-01 23:15:16 1423

原创 OMAP3 DSS 初始化过程(1)总线关系

1,调用流程omap_dss_bus_register()注册一个总线:static struct bus_type dss_bus_type = {.name = "omapdss",.match = dss_bus_match,.dev_attrs = default_dev_attrs,.drv_attrs = default_drv_attrs,};取名为o

2016-01-27 01:54:59 1551

原创 strncpy 引起的思考,重新认识了strncpy这个函数

首先来看一个司空见惯的c语言列子:#include #include int main(){    unsigned char arry[] = {0x00,0x01,0x02,0x03};    unsigned char dest[] = {0xff,0xff,0xff,0xff};    strncpy(dest,arry,sizeof(arry));

2015-07-29 21:41:47 1604 1

原创 中断交互数据的方式

概念:A,带有buffer缓存的设备硬件描述:1,fifo2,dma 1,fifo可以使用任何存储空间,包括外设的一些寄存器组,只要构成一个cpu指令无法完成的读写操作(原子操作)都可以构成buffer。2,dma是设备,不是存储空间。dma的作用是操作和管理fifo的行为。 DMA介绍:    Dma 设备受到参数的影响,表现为: 数据搬移的原始地址,目的地址

2015-05-21 21:26:46 3149

原创 内核分配大块连续内存的方法

参数传递:    uboot向内核传递参数的方式分为两类。    (1)第一类是通过boot cmd 例如在uboot终端提示行使用pri命令现实出的boot arg等。    (2)第二类是通过DeviceTree。在/arch/arm/boot/dts/文件中和定义了和开发板相关的板级描述信息。注(1)Device Tree的分析在其它文章中分析以soc devkit (友

2015-05-21 21:18:23 5257

原创 ARM-Linux (临时,正式) 建立页表的比较

很久没有写博客了,由于之前的写关于OMAP3530文章还没有整理。再加上一直在找工作,找到工作后又投入到另外的平台去工作。始终在忙忙碌碌,但是对于代码确实渐渐疏远。在做项目的时候要使用DDR3分配内存,不经意间使用要和MMU以及TLB打交道。因此特地写下这篇文章以备后用。(工作就是在和遗忘作斗争)! Linux在启动之初会建立临时页表,但是在start_kern

2014-09-01 00:34:43 4191 1

原创 MMU 存储访问控制

关于MMU的地址转换和页表的映射网上已经有了很多的文章。确实写得很好,获益匪浅。在这篇文章中只要记录和描述MMU中关于权限访问的控制。 1,MMU对段和页进行保护,在保护过程中区分了权限。它是由域的访问控制字段和一级描述符或二级描述符中的AP字段,以及C1寄存器的S(表示system),R(表示rom)控制位来共同决定的。MMU中的域是指的一些段,大页或者小页的集合。ARM支持最多16个域

2014-06-03 15:20:38 3017

原创 ARM 中断状态和SVC状态的堆栈切换 (异常)

ARM 中断状态和SVC状态的堆栈切换 (异常) 基础知识:Arm的寄存器使用规则以及寻址指令:R13  Sp     堆栈寄存器R14  Lr     连接寄存器R15  PC     程序计数器 多寄存器寻址:LDMIA R0!,{R1-R4}执行以后的效果R1  R2  R3  R4   堆栈寻址:STMFD入栈指令,相当于

2013-07-07 01:23:04 21025

转载 arm 多寄存器存取使用

老是忘记一些指令的用法... ... 索性记下来,便于以后再查。就当是学习笔记了。多寄存器和堆栈寻址的用法:多寄存器寻址:LDMIA,LDMIB,STMIA,STMIB,LDMDA,LDMDB,STMDA,STMDB;堆栈寻址:LDMFA,LDMFD,STMFA,STMFD,LDMEA,LDMED,STMEA,STMED;指令后缀的解释:弄清堆栈寻址的SP的变化:LDM

2013-07-01 02:13:22 1815

原创 Mmap的实现原理和应用

很多文章分析了mmap的实现原理。从代码的逻辑来分析,总是觉没有把mmap后读写映射区域和普通的read/write联系起来。不得不产生疑问:1,普通的read/write和mmap后的映射区域的读写到底有什么区别。2, 为什么有时候会选择mmap而放弃普通的read/write。3,如果文章中的内容有不对是或者是不妥的地方,欢迎大家指正。 围绕着这两个问题分析一下,其实在考虑

2013-02-23 00:02:30 23533 12

转载 Kernel Linker Scripts Analysis (ARM Architecture)

1. arch/arm/kernel/vmlinux.lds的生成:顶层的vmlinux是由arch/arm/kernel/vmlinux.lds链接生成,顶层Makefile里面定义:693 vmlinux-lds  := arch/$(SRCARCH)/kernel/vmlinux.lds arch/arm/kernel/vmlinux.lds是由arch/arm/kernel

2013-01-28 21:45:40 1237

原创 Sound Mixer (Control 接口 1)

1,初始化函数:snd_soc_add_controls(codec, wm9713_snd_ac97_controls,ARRAY_SIZE(wm9713_snd_ac97_controls));    首先wm9713_snd_ac97_controls结构体数组的实力化,这个过程是在编译的时候就决定的。是使用宏定义完成的。(1)涉及到两个结构体,一个是snd_kcontr

2013-01-23 17:08:14 2020

原创 Sound Mixer (设备初始化)

1,首先来明确这个设备节点的由来。这个节点代表声卡的控制接口。设备的路径:/dev/snd/controlC0 由于基本的linux的操作是由ioctl进行用户空间和内核空间的数据交互已达到实现控制。那么就看看这个设备的由来。static int snd_ctl_dev_register(struct snd_device *device){   struct snd_ca

2013-01-23 17:06:41 2352

原创 arm-gdb移植(编译)

调试应用程序的时候最好有调试工具类似于PC机上的GDB和DDD。写这篇文章的原因也是想要调试应用程序,所以决心自己作一次开发板上GDB的移植。网上相关的文档很多。也很精辟,在这里做一个汇总,以备后用。 GDB移植:GDB移植其实分为两种,两种方法的的区分是鉴于使用和编译后的工具而言。1,第一种是 开发板上使用ARM版的GDB,就像PC机上使用GDB。2,第二种是 开发板上使

2012-11-18 04:19:44 6918

原创 linux设备管理-dev目录下创建和寻找某一设备文件

这是一篇网上找到的文章分析的很精彩,这篇文章的分析基于网络高手文章中没有介绍的方面。如果有什么不对的地方,请指正。谢谢file_operations流程跟踪术语描述符:其实就是结构体在linux可以把设备看作文件并提供了和文件一样的统一的访问接口,相信大家已经有了一点的了解,其底层对设备的不同操作主要是由file_operations描述符来控制,其封装了各种设备的

2012-11-18 04:10:02 5497

转载 TCP连接建立与关闭

TCP连接建立与关闭  TCP 是一个面向连接的协议,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。本节将详细讨论一个TCP 连接是如何建立的以及通信结束后是如何终止的。建立一个 TCP 连接  TCP使用三次握手 ( three-way handshake ) 协议来建立连接,图 3-10 描述了三次握手的报文序列。这三次握手为:请求端(通常称为客户)发送一

2012-10-23 15:08:26 1198

原创 从sd卡启动之文件系统制作

在调试andriod的代码时候发现了一个问题。在andriod调试的时候无法进入常规的文件系统进行简单的操作。由于想要把alsa移植到210的开发板中,发现“/”文件系统是无法进行读写的。在根文件系统下有一个system的目录可以进行读写但是执行命令的时候发现无法操作,顾想到了可读写的文件系统的移植。因此记录下来这篇文章以便后用,也为了遇到相同问题的开发者提供微薄的帮助。    1,fdisk

2012-10-05 22:15:17 6987

转载 load_elf_binary中使用的内存映射机制

load binary 中使用到的内存映射机制 研究了半天的exec函数后发现,所谓的load binary不是load(read 函数)而是重新安排的过程,在这个过程中涉及了很多的vm操作,找到一篇的好的文章。接下来看看高手的分析: 当某个程序的映象开始执行时,可执行映象必须装入到进程的虚拟地址空间。如果该进程用到了任何一个共享库,则共享库也必须装入到进程的虚拟地址空间。由此可看

2012-09-20 02:23:21 4063

原创 Omap 3530 SDRAM 控制器初始化的一些思考

文章中有不足之处,请高手指点。希望有兴趣的读者交流讨论。谢谢名词解释SDRC : OMAP 3530内存接口控制器。1,DDR SDRAM 原理:   DDR SDRAM 的原理在网上有很多精彩的分析,在这里不再一一复述。但是觉得比较经典的理论莫过于:以下是来自网上一篇精彩的分析http://hi.baidu.com/dark_hc/blog/item/217dd58f335a84

2012-09-09 03:52:10 2077

转载 根文件系统的启动及配置linuxrc - linuxrc又来以及解释

一、内核启动完之后,首先运行/linuxrc。/linuxrc内容:#!/bin/sh echo "mount /etc as ramfs" /bin/mount -n -t ramfs ramfs /etc        /bin/cp -a /mnt/yaffs/etc/* /etc //关机的时候我们会保存/etc的内容到/mnt/yaffs/etc.

2012-09-09 03:31:09 1829

原创 编译器如何决定变量长度

接着自己发布的一段code 就是强制转换后的指针变量将会方位不同长度的内存变量。后来又想到一个问题:    int a     是32位    char a  是8 位    那么在32位的变量处理上和8位的变量处理上会有什么区别?    其实主要想要搞明白对于一个已知位宽的芯片来说(32位),怎么区分写到寄存器或是外设上的数据是使用了低16位,还是低8位,还是32位。

2012-08-25 15:57:01 1401

转载 insmod 内核模块时参数传递 应用篇

内核模块参数传递    在看omap vout.c 的模块时候发现了一些关于LCD和输出的参数是由u-boot中的命令行传递而来。分析一下内核模块的参数传递问题。究竟是如何实现的。以下内容来自于:http://blog.21ic.com/user1/5593/archives/2010/66420.html    对于如何向模块传递参数,Linux kernel 提供了一个

2012-08-23 00:09:14 6280

alsa应用分析

alsa 应用层代码分析网上搜索到得,可以为了学习alsa的lib和util。非常好的文档。

2012-10-09

x-load-1.41 for omap3530

xload (boot code) for omap3530

2012-08-27

tr069-CPE WAN 管理协议

本文档描述CPE WAN 管理协议,适用于CPE与自动配置服务器(ACS)间的通信。CPE WAN管理协议定义包括安全地自动配置CPE以及在公用框架下的其它CPE管理功能。

2009-10-06

linux 内存管理(虚拟地址到物理地址)

Linux操作系统采用虚拟内存管理技术,使得每个进程都有各自互不干涉的进程地址空间。该空间是块大小为4G的线性虚拟空间,用户所看到和接触到的都是该虚拟地址,无法看到实际的物理内存地址。利用这种虚拟地址不但能起到保护操作系统的效果(用户不能直接访问物理内存),而且更重要的是,用户程序可使用比实际物理内存更大的地址空间(具体的原因请看硬件基础部分)

2008-11-23

napi在网卡驱动中技术应用

NAPI 是 Linux 上采用的一种提高网络处理效率的技术,它的核心概念就是不采用中断的方式读取数据,而代之以 POLL 的方法来轮询数据,类似于底半方式(bottom-half 的处理模式);但是目前在 Linux 的 NAPI 工作效率比较差,本文在分析 NAPI 的同时,提供了一种高效的改善方式供大家参考。

2008-11-23

三层交换和路由的区别

三层交换机和路由器都工作在网络的第三层,根据ip地址进行数据包的转发(或交换),原理上没有太大的区别, 这两个名词趋向于统一,所谓交换路由器和路由交换机指的是同一样东西。我们可以认为三层交换机就是一个多端口的路由器。

2008-11-23

tcp-ip 函数层次分析

tcp-ip的文档,罗列出了发送和接受时,内核所调用的函数和所执行的过程。(粗略的),细致的还在整理。

2008-09-12

kgdb-quickstart-2.4 English Version

tells you how to start kgbd on you own.and further info will be upraded soon.

2008-09-12

c 语言编程修炼-嵌入式

作为c语言学习的学习结合了硬件的特性。在文中介绍了cpu(arm)的工作特性,以及代码实现。

2008-09-01

pointer in Embedded sys

指针在c语言中的应用,详细介绍了指向函数的指针,和返回地址为指针的函数,以及调用关系!

2008-09-01

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除