DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 542 评论 :: 1615万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  嵌入式

上一页 1 2 3 4 5 6 7 ··· 11 下一页

嵌入式
摘要:什么是ramfs?ramfs是空间规模动态变化的RAM文件系统。它非常简单,是用来实现Linux缓存机制(缓存page cache and dentry cache)的文件系统。通常情况下,Linux的所有文件在内存中都有缓存。需要读取的数据页从支撑存储设备(block device)中读取后,缓存 阅读全文
posted @ 2016-07-29 17:39 DoubleLi 阅读(3250) 评论(0) 推荐(0) 编辑

摘要:uImage的制作是使用的u-boot工具mkimage,build完u-boot后也会将mkimage build出來到/tools目录下,可以直接拿來用,它的作用就是在zImage的前面加上64个字节的头,让u-boot能够识别要加载内核的类型、加载地址等。 基本格式:mkimage -A ar 阅读全文
posted @ 2016-07-29 10:59 DoubleLi 阅读(351) 评论(0) 推荐(0) 编辑

摘要:根据说明文档“How To Write Shared Libraries"介绍, 有四种方法: 1. 在方法声明定义时,加修饰:__attribute__((visibility("hidden"))) 就是说将不公开的函数都加上这个属性,没加的就是可见的 2. gcc 在链接时设置 -fvisib 阅读全文
posted @ 2016-07-25 16:05 DoubleLi 阅读(7321) 评论(0) 推荐(1) 编辑

摘要:说道“动态库版本兼容”,很多人头脑中首先蹦出的就是“Dll Hell”。啊,这曾经让人头疼的难题。时至今日,这个难题已经很好地解决了。 在进一步讨论之前来思考一个问题:Linux下为什么没有让人头痛的“DllHell”?回答这个问题,非常easy,因为——Linux下根本没有dll! 哈哈,当然这只 阅读全文
posted @ 2016-07-25 16:04 DoubleLi 阅读(2518) 评论(0) 推荐(0) 编辑

摘要:我们很多c程序在windows下是以dll形式展现的,在linux则是以so 形式展现的。 windows一般不会因为编译dll文件的编译器版本不同而出先dll文件不能执行。 但是linux下,不同版本内核的linux下编译的c程序,在其他版本的linux下就容易出现无法执行的问题。主要可能是支持程 阅读全文
posted @ 2016-07-25 11:12 DoubleLi 阅读(12035) 评论(0) 推荐(0) 编辑

摘要:objdump -tT libName.so | grep symbel symbolName nm -D libName.so | grep symbel symbolName 很多非常熟悉windows 进程依赖那个dll,使用depends,linux使用ldd命令。查看函数windows使用 阅读全文
posted @ 2016-07-25 11:10 DoubleLi 阅读(7394) 评论(0) 推荐(0) 编辑

摘要:linux下查看动态链接库依赖关系的命令 x86:ldd *.so arm:arm-linux-readelf -d *.so 实际例子:以项目中用到的库librtsp.so分析:lijun@ubuntu:~/workspace$ arm-hisiv100nptl-linux-ld -d librt 阅读全文
posted @ 2016-07-25 10:49 DoubleLi 阅读(1784) 评论(0) 推荐(0) 编辑

摘要:今天在帮同事查看一个问题时, 需要用到ldd, 于是就顺便看了一下ldd的实现. 好在ldd本身只是一个脚本, 而不是executable, 可以直接查看实现的代码.根据注释: 21 # This is the `ldd' command, which lists what shared libra 阅读全文
posted @ 2016-07-25 10:05 DoubleLi 阅读(3354) 评论(0) 推荐(0) 编辑

摘要:U盘挂载命令U盘插入的时候会显示启动信息,启动信息中sda: sda1指U盘的设备名为sda1dev设备目录下有一个sda1设备文件,此设备文件就是我们插入的U盘,我们将这个设备文件挂载到Linux系统的/mnt/udisk1这个目录下,这样我们即可以通过访问/mnt/udisk1目录来读写U盘,挂 阅读全文
posted @ 2016-06-30 19:40 DoubleLi 阅读(6047) 评论(0) 推荐(0) 编辑

摘要:在网上有很多关于讲mdev的自动挂载基本上都是一个版本,经过测试自动挂载确实可行,但是关于自动卸载mdev似乎不能很好的支持,经过修改已经可以做到与udev的效果相似。不能在挂载的目录中进行热插拔,否则会出现问题,不过此问题在下次插入U盘时不会造成影响,可能对U盘有损坏。 本文介绍了mdev与ude 阅读全文
posted @ 2016-06-30 16:53 DoubleLi 阅读(3387) 评论(1) 推荐(0) 编辑

摘要:Linux的文件系统是异步的,也就是说写一个文件不是立刻保存到介质(硬盘,U盘等)中,而是存到缓冲区内,等积累到一定程度再一起保存到介质中。如果没有umount就非法拔出U盘,程序是不知道的,fopen,fwrite等函数都依然返回正确,知道操作系统要把写介质的时候,才会提示I/O错误。可是很多数据 阅读全文
posted @ 2016-06-30 16:52 DoubleLi 阅读(7445) 评论(0) 推荐(0) 编辑

摘要:例: [cpp] view plain copy status = system("./test.sh"); [cpp] view plain copy status = system("./test.sh"); [cpp] view plain copy [cpp] view plain copy 阅读全文
posted @ 2016-06-30 16:51 DoubleLi 阅读(6805) 评论(0) 推荐(0) 编辑

摘要:以下是网上看到的解决办法:http://blog.csdn.net/heqiuya/article/details/7870554 [plain] view plain copy 其实是掉电保护,之前挂在的SD变成了制度文件,只需要将SD卡重新挂载一遍就OK了. FAT: Filesystem pa 阅读全文
posted @ 2016-06-30 16:44 DoubleLi 阅读(2552) 评论(1) 推荐(0) 编辑

摘要:一、土八路做法: SD 卡一旦插入系统,内核会自动在/dev/下创建设备文件:sdcard。 但有时可能时用户在拨出卡前并没有umount的话,第二次插卡进去后系统创建的就不是sdcard设备文件了,而是mmcblk0, mmcblk1p1, mmcblk2p1, 或mmcblk3p1.所以只需用i 阅读全文
posted @ 2016-06-30 16:41 DoubleLi 阅读(7639) 评论(0) 推荐(0) 编辑

摘要:我们可以通过 1) gdb prog_name -> r 用在逐步调试自己的程序时 2) gdb -> attach process_id 正在运行中的后台程序突然卡在了某个地方,先ps再gdb/attach 3) gdb prog_name core 程序core掉了 三种方式对一个程序进行调试; 阅读全文
posted @ 2016-06-30 14:54 DoubleLi 阅读(1757) 评论(0) 推荐(0) 编辑

摘要:只做工作总结备忘之用。 正在烧镜像,稍总结一下进来改bug遇到的问题。 一个项目里要用到L3 switch的nat,vrrp功能,但实地测试中偶然出现write file挂死的情况,但不是必现。交付在即,于是加调试信息,反复跑配置的脚本,定位bug。 一,期初怀疑是vtysh与vrrpd进程通信出现 阅读全文
posted @ 2016-06-30 14:52 DoubleLi 阅读(593) 评论(0) 推荐(0) 编辑

摘要:摘要:在使用多线程程序时,有时会遇到程序功能异常的情况,而这种异常情况并不是每次都发生,很难模拟出来。这时就需要运用在程序运行时跟踪线程的手段,而linux系统的LWP和strace命令正是这种技术手段。本文对LWP和strace命令做了简明扼要的介绍,并通过一个实例来说明如何运用。总而言之,LWP 阅读全文
posted @ 2016-06-30 14:42 DoubleLi 阅读(6112) 评论(0) 推荐(0) 编辑

摘要:方法一:strace -fp pid , 可以跟踪所有线程, 进程的系统调用。 [root@xxxx]strace -p 24091 Process xxx attached - interrupt to quit [ Process PID=24091 runs in 32 bit mode. ] 阅读全文
posted @ 2016-06-30 14:18 DoubleLi 阅读(8867) 评论(0) 推荐(0) 编辑

摘要:pthread_kill: 别被名字吓到,pthread_kill可不是kill,而是向线程发送signal。还记得signal吗,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。 int pthread_kill(pthread_t threa 阅读全文
posted @ 2016-06-30 13:34 DoubleLi 阅读(8390) 评论(0) 推荐(0) 编辑

摘要:pstack.sh: #! /bin/sh if [ -z $1 ] then echo "gdb script for print stack" echo "usage: $0 pid" exit fi gdb --batch --quiet -x cmds -p $1 cmds: echo /n 阅读全文
posted @ 2016-06-30 09:30 DoubleLi 阅读(665) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 ··· 11 下一页
点击右上角即可分享
微信分享提示