linux
liuxd3000
Hello World!
有技术问题可以发邮件[email protected]
wx:liuxd3000
qq:343935622
展开
-
串口通讯到底有没有累积误差?对时钟精度到底有何要求?
基于以上的分析,可以得出结论如下:串口稳定通讯和双方的时钟精度和有关,总误差不能超过±4.16%,对于大部分全温度范围±1%的MCU来说,都能满足基本的通讯需求。串口通讯的累计误差发生在每次数据(也可以简单理解成每个字节,只是字节不严谨,因为有时数据可能是9 bits)发送内部,连续的多次发送之间没有累计误差,因为连续的多个字节发送都会被Start起始信号进行重新同步,也就是说传输1个字节的误差和传输1000个字节的误差基本差不多;转载 2022-12-21 14:42:52 · 1934 阅读 · 0 评论 -
ARM+Linux使用gdb coredump方式调试
coredump gdb debug linux原创 2022-07-18 17:42:47 · 949 阅读 · 0 评论 -
busybox top 在后台运行时要以batch mode方式运行
busybox top -b原创 2022-04-01 09:18:47 · 2492 阅读 · 0 评论 -
用kernel FDT的思路来研究u-boot FIT
u-boot FIT image介绍1. 前言Linux kernel在ARM架构中引入device tree(全称是flattened device tree,后续将会以FDT代称)的时候[1],其实怀揣了一个Unify Kernel的梦想----同一个Image,可以支持多个不同的平台。随着新的ARM64架构将FDT列为必选项,并将和体系结构有关的代码剥离之后,这个梦想已经接近实现:在编译linux kernel的时候,不必特意的指定具体的架构和SOC,只需要告诉kernel本次编译需原创 2021-11-10 17:04:06 · 2587 阅读 · 0 评论 -
marvell FDB - MAC地址表
英文:Forwarding Database中文:MAC地址表介绍:网络设备都以MAC地址来唯一地标识自己,而交换机要实现设备之间的通讯就必须知道自己的哪个端口连接着哪台设备,因此就需要一张MAC地址与端口号一一对应的表,以便用于在交换机内部实现二层数据转发,这张二层转发表就是FDB表,也叫MAC地址表,主要由MAC地址、VLAN号、端口号和一些标志域等信息组成,如果收到数据帧的目的MAC地址不在FDB地址表中,那么该数据将被发送给除源端口外该数据包所属VLAN中的其他所有端口(进行 Flood...转载 2020-10-22 16:56:42 · 485 阅读 · 0 评论 -
mdio clause22 clause45以及marvell直接寻址/间接寻址的使用说明--基于mv88e6390 交换机
最新在设计marvell公司的mv88e6390 交换机,在实现其驱动时感觉mdio读写reg时用到了三种读读写时序,现在总结一下,让后来的方便理解和使用;1.直接寻址:基于mdio clause22: 5bit dev addr+5bit reg addr,每个reg16bit;2.间接寻址:分两种:2.1:基于mdio clause22:static int mv88e6xxx_mdio_read_indirect_cls22(struct mv88e6xxx_priv......原创 2020-10-17 10:51:11 · 2998 阅读 · 0 评论 -
Scons入门简介
Scons是什么make在Linux系统上做过c/c++开发的同学们都知道一个项目工程管理工具:make和Makefile。make 这个工具自上个世纪 70 年代 Stuart Feldman 在贝尔实验室开发出以来,就一直是类 UNIX 程序员的最爱之一。通过检查文件的修改时间,make 工具可以知道编译目标文件所要依赖的其他文件。在复杂的项目中,如果只有少数几个文件修改过,make 工具知道仅仅需要对哪些文件重新编译就可以确保目标程序被正确的编译链接。这样做的好处就是在编译中,不仅可以转载 2020-10-10 16:40:50 · 268 阅读 · 1 评论 -
rockchip RGMII+mv88e6390 管理型交换机功能调试及vlan定制+Mac绑定
1.cpu主控:rk3399;2.交换机芯片marvell mv88e6390(8个电口+2光口);3.rk399通过RGMII与marvell mv88e6390连接,port0做数据转发口,实现带管理路由器功能(port1作WAN,port2-port10做LAN)实现步骤:通过tag based vlan将marvell mv88e6390划分为vlan1(wan)+vlan2(lan);用vconfig实现 vlan网桥;通过iptables 实现wan/lan数据转发..原创 2020-10-09 18:18:06 · 4050 阅读 · 10 评论 -
ic+ ip175d 5port switch 驱动调试
方案: imx6ul+ip175d ;产品功能:实现4网口路由器(1wan+3lan)和交换机(4Lan)功能;具体实现技术关键点:vlan/lan/wan开发过程:原创 2020-08-04 15:44:55 · 1741 阅读 · 1 评论 -
人体测温 melexis迈来芯 linux 平台mlx90614/mlx90621/mlx90641驱动调试
0.iic驱动的实现:由于规格书上说mlx使用smbus接口,本人用硬件i2c驱动来调试时死活不通,没有办法只能改用io,用io来模拟i2c,这种方式很好用。原创 2021-02-05 11:10:20 · 3251 阅读 · 0 评论 -
Atsha204a使用心得
最近公司要用到Atsha204a做软件和硬件的绑定加密,于是就调了它的驱动,将使用过程中遇到的坑整理下,也好让各位同仁少加点班;废话少说,直接入正题。0.加密原理:主控端和Atsha204a端有相同的16组密码,生成一组随机数,主控端用约定的一组密码使用sha256()加密算法生成Hash值(32 byte),同时主控将它用的随机数传给Atsha204a端,用与主控约定的一...原创 2020-04-28 20:02:19 · 1479 阅读 · 0 评论 -
Linux+EC20 拨号()上网或者Gobinet上网方式的实现
1.拨号(ppp)上网的实现:1.1插上pcie ec20,保证系统可以识别到:lsusb -vBus 002 Device 002: ID 2c7c:0125Bus 001 Device 001: ID 1d6b:0002Bus 002 Device 001: ID 1d6b:0002可见ec20 (2c7c:0125)已经正常认识到;1.2:添加usb2ser...原创 2020-03-20 16:04:06 · 4579 阅读 · 1 评论 -
imx6ul u-boot nand write ubi rootfs
0. build rootfs1. mkfs.ubifs:mkdir rootfssudo tar zxvf rootfs.tar.gz -C rootfssudo mkfs.ubifs -r rootfs -m 2KiB -e 124KiB -c 1848 -o rootfs.ubifs.img2. u-boot tftp nand writerootfs.ubifs.i...原创 2020-03-18 16:10:29 · 582 阅读 · 0 评论 -
openwrt tftp 烧录openwrt-ramips-mt7628-mt7628-squashfs-sysupgrade.bin
0. 搭建ubuntu14.04 编译环境及相关工具软件。1.下载openwrt source code.2. 编译openwrtsysupgrade.bin.3. 搭建tftpd server,供uboot tftp用.4.通过uboot tftp 将sysupgrade.bin下载进目标板.原创 2016-02-26 18:10:44 · 5438 阅读 · 0 评论 -
原创 Hi3516dv300 开发第五讲 rootfs.ubifs 转成rootfs.ext4
由于hi3516dv300 sdk里面只有spi/nand flash上用的根文件系统,是否可以将其转成emmc上使用ext4 rootfs呢?答案是肯定的:0.找到ubi格式的rootfsrootfs_hi3516dv300_2k_128k_32M.ubifs:1.安装工具mtd-utils: sudo apt-get install mtd-utils2.执行如下的scrip...原创 2020-03-04 15:12:25 · 760 阅读 · 0 评论 -
Hi3516dv300 开发第四讲 uboot常用cmd说明
printenv打印当前环境变量;setenv ethaddr 32:34:46:78:9A:DC设置eth0 mac地址;setenv serverip 192.168.1.63设置tftp ipsetenv serverip删除tftp server ip配置setenv ipaddr 192.168.1.10设置本地eth0 ipsetenv ip...原创 2020-03-03 11:59:39 · 482 阅读 · 0 评论 -
Hi3516dv300 开发第一讲 sdk的准备及环境变量的配置,uboot kernel的编译
0.下载hi3516dv300 sdk1.uboot /kernel open src的做准备2sdk的编译: 1 # 2 FLASH=emmc 3 if [ $FLASH == emmc ];then 4 echo "FLASH == emmc" 5 echo "make uboot start" 6 cd Hi3516CV500_SDK_V2.0....原创 2020-03-03 11:54:38 · 1455 阅读 · 0 评论 -
Hi3516dv300 开发第二讲 rootfs的制作
0. 由于本案使用hi3516dv300+EMMC (8GB),故要制作ext4的rootfs.1. 使用sdk里的源码生成工作:make_ext4fs cd osdrv/tools/pc/ext4_utils/ tar -xfext4_utils.tar.bz2 make 生成bin/make_ext4fs2...原创 2020-03-03 11:52:08 · 628 阅读 · 0 评论 -
Hi3516dv300 开发第三讲 tftp 烧录uImage/rootfs步骤
目前手头有空,就玩了下hi3516dv300的开发板子,进行了sdk的编译(uboot +kernel+ko),详见下一篇;然后要进行固件分区烧录,现将步骤作个笔记。0.前提:机器已经烧录好uboot,可以使用串口进入uboot模式;1.打开tftp server ,请要烧录的文件(uImage/rootfs.camfs)放到其目录;2.在uboot里找开系统分区信息:...原创 2020-03-03 11:46:55 · 1607 阅读 · 0 评论 -
linux设备模型之spi子系统
linux设备模型之spi子系统===============================本文系本站原创,欢迎转载!转载请注明出处:http://www.cnblogs.com/gdt-a20=============================== 相比于前面介绍的i2c子系统,spi子系统相对简单,和i2c的结构也很相似,这里主要介绍一下平转载 2013-11-06 14:41:33 · 963 阅读 · 0 评论 -
preempt_enable 和 preempt_disable
关于preempt_enable 和 preempt_disable允许抢占和禁止抢占。例如:内核态程序 和 中断处理程序的互斥因为中断是异步的(不只要何时发生中断,也即随时可能发生中断),因此如果内核态的程序使用了和中断处理程序中相同的数据结构,那么必须进行互斥访问。load %r0, counteradd %r0,1 //发生中断转载 2015-02-12 10:02:31 · 718 阅读 · 0 评论 -
如何将u盘(移动硬盘)mount到ubuntu系统
ubuntu mount udisk原创 2015-01-22 09:45:09 · 8721 阅读 · 1 评论 -
linux/android 调试专用工具
readelf显示目标ELF文件的信息,比如信赖库,头信息,段信息等。addr2line用户进程崩溃时内核会记录一些基本的调试信息,如果进程执行的ELF文件包含调试符号,就可以通过addr2line找到源文件中哪一行出问题。我在调试Android的VM崩溃问题时使用到了这个工具(详细过程参考这里http://blog.csdn.net/a345017062/archive/2011转载 2014-10-09 11:34:25 · 651 阅读 · 0 评论 -
Linux 增加sys节点技巧
Linux 增加sys节点技巧2014-05-17本站整理浏览(298)Linux 增加sys节点技巧,有需要的朋友可以参考下。1. 子系统位platform /sys/devices/platform/att_testlrwxrwxrwx 1 root root 0 2014-05-17 10:04 driver -> ../../../bus/platf转载 2014-10-27 18:25:11 · 3031 阅读 · 0 评论 -
Linux 系统内核的调试
试是软件开发过程中一个必不可少的环节,在 Linux 内核开发的过程中也不可避免地会面对如何调试内核的问题。但是,Linux 系统的开发者出于保证内核代码正确性的考虑,不愿意在 Linux 内核源代码树中加入一个调试器。他们认为内核中的调试器会误导开发者,从而引入不良的修正[1]。所以对 Linux 内核进行调试一直是个令内核程序员感到棘手的问题,调试工作的艰苦性是内核级的开发区别于用户级开发转载 2014-10-27 15:38:24 · 1288 阅读 · 0 评论 -
Linux内核调试
悄悄地进入Linux内核调试(一) 本文基址:http://blog.csdn.net/cugxueyu/archive/2007/12/21/1957740.aspx※ 调试工作艰苦,是内核级开发区别于用户级开发的一个显著特点。※ 驾驭内核调试的能力,很大程度上取决于经验和对整个操作系统的把握。 一、调试前的准备 内核级bug具有行为不可靠,定义不清晰或者转载 2014-10-27 15:28:06 · 555 阅读 · 0 评论 -
Linux内核高端内存
@@ -12,7 +12,7 @@ TARGET_RIL_DISABLE_STATUS_POLLING := true TARGET_BOARD_KERNEL_HEADERS := device/intel/common/kernel-headers KERNEL_SRC_DIR ?= linux/kernel-BOARD_SYSTEMIMAGE_PARTITION_SIZE转载 2014-10-08 15:50:42 · 643 阅读 · 0 评论 -
http://www.cnblogs.com/bastard/archive/2012/09/21/2697407.html
http://www.cnblogs.com/bastard/archive/2012/09/21/2697407.html原创 2014-10-08 16:28:45 · 717 阅读 · 0 评论 -
Linux内核--内核地址空间分布和进程地址空间
Linux内核--内核地址空间分布和进程地址空间内核地址空间分布直接映射区:线性空间中从3G开始最大896M的区间,为直接内存映射区,该区域的线性地址和物理地址存在线性转换关系:线性地址=3G+物理地址。动态内存映射区:该区域由内核函数vmalloc来分配,特点是:线性空间连续,但是对应的物理空间不一定连续。vmalloc分配的线性地址所对应的物理页可能处于低端内存,也可能转载 2014-10-08 11:34:05 · 636 阅读 · 0 评论 -
sys/class接口
笔记之-class/sys接口 2012-08-06 22:07:55分类: LINUX笔记之 - class============== 开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点(包括ldd3中不少例子也是这样),实际上现在Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模转载 2014-11-07 14:30:51 · 3351 阅读 · 0 评论 -
内核文件权限值 S_IRUGO=S_IRUSR | S_IRGRP | S_IROTH
mode_t 内核文件权限值 S_IRUGO=S_IRUSR | S_IRGRP | S_IROTH 分类: LINUX在 http://blog.csdn.net/iczyh/article/details/3206249 文章中有 mode_t类型的数据,对此不是很了解,在此记录下:创建一个 proc 文件根据对 proc 文件的不同使用转载 2014-11-07 14:26:22 · 24858 阅读 · 0 评论 -
linux 编译时多个源文件生成一个目标文件
obj-m := target.o target-objs := src1.o src2.o src3.o原创 2014-08-11 11:41:08 · 2213 阅读 · 0 评论 -
常用git commond 锦集
git原创 2014-08-08 10:29:17 · 1578 阅读 · 0 评论 -
platform_device/platform_device_register platform_driver/platform_driver_register misc_device/misc_r
platform_device/platform_device_register platform_driver/platform_driver_register原创 2015-01-05 15:44:20 · 1067 阅读 · 0 评论 -
调elp8865 手势感应,加上一曲下一曲功能
将自己调elp8865的过程记录一下,也方便各位童鞋参考:1. 调driver:原创 2015-02-04 16:07:00 · 905 阅读 · 0 评论 -
request_threaded_irq vs request_irq
在 Linux 中,中断具有最高的优先级。不论在任何时刻,只要产生中断事件,内核将立即执行相应的中断处理程序,等到所有挂起的中断和软中断处理完毕后才能执行正常的任务,因此有可能造成实时任务得不到及时的处理。中断线程化之后,中断将作为内核线程运行而且被赋予不同的实时优先级,实时任务可以有比中断线程更高的优先级。这样,具有最高优先级的实时任务就能得到优先处理,即使在严重负载下仍有实时性原创 2015-02-15 14:35:55 · 1014 阅读 · 0 评论 -
hi3559av100/hi3519av100/hi3516dv300/hi3516cv500
原创 2019-08-22 20:08:58 · 2279 阅读 · 0 评论 -
4g模块EC20+android6.0系统移植
最近手里的项目在用allwinner的R16+andoroid6.0的网联网项目,网络模块用到了移远的EC20 4G全网通模块,EC20通过mini PCIe转usb连接到主控R16. 一开调试问了一下原厂,原厂说sdk里以前没有支持过4g,但支持过3g,如果要添加4g需要自己动手做。于是我就开始了: 1. 给模块上电,配置vcc_en/reset/wakeup p...原创 2018-04-19 19:15:21 · 9270 阅读 · 3 评论 -
usb ethernet 网卡 RTL8152的调试
最近手里的项目有用到andoroid平台上加usb ethernet rtl8151模块,自己认真鼓捣了一周,终于调试通了,现将过程分享一下,供各位同仁参考。1. 保证rtl8152与主控联接正常,且模块与主机通讯成功。方法有如下两个: 1.1 :接入usb ethernet时看一下kernel里的log:<6>[ 7353.740822] usb 1-1.3: new hig...原创 2018-04-19 17:01:35 · 22474 阅读 · 12 评论 -
通过 echo AT+B TEST > /dev/ttyS1往串口里写数据发不出来是怎么回事?
今天直接通过adb shell 的echo往串口里写AT数据,明明写echo AT+B TEST > /dev/ttyS1进去了,但是3g模块却没有响应,这到底是怎么回事?我用显波器量了,好像了有数据,但就是发不出来,到现在都不知道是怎么回事,超级的郁闷啊!各位大虾看看是怎么回事?1.先将串口的初始化贴出来:void SetCommAttr(int rate){printf(" Ent原创 2015-03-12 18:08:05 · 12543 阅读 · 2 评论