- 博客(35)
- 资源 (22)
- 收藏
- 关注
原创 嵌入式 tcp或者udp发包协议使用结构体注意事项
/** recv broadcast run in the 3518c board **/#include #include #include #include #include #include #include #include #include #include #ifdef SOLARIS#include #endi
2014-04-30 14:43:31 1195
原创 嵌入式 最精简的程序获取IP以及广播地址示例
#include#include#include#include#include#include#include#include#include#include #include int main(int argc, char *argv[]){ int inet_sock; struct ifreq ifr; //建立套接字 ine
2014-04-29 14:22:20 837
原创 嵌入式 Linux下进行广播包交互示例
服务器端也就是接受广播包:#include #include #include #include #include #include #include /** 广播接收端代码 **/#define IP_FOUND "IP_FOUND"#define IP_FOUND_ACK "IP_FOUND_ACK"#define PORT 9999i
2014-04-29 13:54:04 1851
原创 嵌入式 获取网卡设备以及IP和MAC地址示例以及网络编程之ioctl小结
#include #include #include #include #include #include #include #include #ifdef SOLARIS#include #endif#define MAXINTERFACES 16main (argc, argv)register int argc;register c
2014-04-28 15:57:45 6943
原创 嵌入式 获取linux下的网卡的MAC地址
#includestdio.h>#include stdlib.h>#include string.h>#include errno.h>#include unistd.h>#include sys/socket.h>#include sys/ioctl.h>#include net/if.h>#include net/if_ar
2014-04-28 15:27:29 1603
原创 嵌入式 Linux下svn co时提示错误解决办法 - 'PROPFIND of 'path': 403 Forbidden以及批量删除“.svn”
错误提示:[root@rhel5 ~]# svn co http://10.10.16.252/code_svn/xl_download/download_server/OperatorCorpProject/trunk/ip_lib/ svn: PROPFIND request
2014-04-28 15:19:45 1381
转载 嵌入式 start_kernel函数详解
如果以为到了c代码可以松一口气的话,就大错特措了,linux的c也不比汇编好懂多少,相反到掩盖了汇编的一些和机器相关的部分,有时候更难懂。其实作为编写操作系统的c代码,只不过是汇编的另一种写法,和机器代码的联系是很紧密的。 start_kernel在 /linux/init/main.c中定义: asmlinkage void __init start_kernel(void)
2014-04-25 22:12:52 2070
转载 嵌入式 uboot通过CMD_LINE传参给kernel以及kernel启动分析
Linux内核在启动的时候需要一些参数,以获得当前硬件的信息或者启动所需资源在内存中的位置等等。这些信息可以通过bootloader传递给内核,比较常见的就是cmdline。以前我在启动内核的时候习惯性的通过uboot传递一个cmdline给内核,没有具体的分析这个过程。最近在分析内核启动过程的时候,重新看了一下内核启动参数的传递过程,彻底解决一下在这方面的疑惑。 一、bootloader
2014-04-25 22:08:50 4852 1
转载 嵌入式 arm平台kernel启动第二阶段分析
接着上面的分析,第一阶段的代码跳转后,会进入第二阶段的代码。第二阶段的代码是从\arch\arm\kernel\head.S开始的。内核启动第二阶段主要完成的工作有,cpu ID检查,machine ID(也就是开发板ID)检查,创建初始化页表,设置C代码运行环境,跳转到内核第一个真正的C函数startkernel开始执行。这一阶段涉及到两个重要的结构体:(1) 一
2014-04-25 22:03:38 980
转载 嵌入式 arm平台kernel启动第一阶段汇编head.s分析
arm linux 内核生成过程 1. 依据arch/arm/kernel/vmlinux.lds 生成linux内核源码根目录下的vmlinux,这个vmlinux属于未压缩,带调试信息、符号表的最初的内核,大小约23MB; 命令:arm-linux-gnu-ld -o vmlinux -T arch/arm/kernel/vmlinux.lds arch/arm/kernel
2014-04-25 22:02:12 1141
转载 嵌入式 内核启动流程小结
当内核映像被加载到RAM之后,Bootloader的控制权被释放。内核映像并不是可直接运行的目标代码,而是一个压缩过的zImage(小内核)。但是,也并非是zImage映像中的一切均被压缩了,映像中包含未被压缩的部分,这部分中包含解压缩程序,解压缩程序会解压缩映像中被压缩的部分。zImage使用gzip压缩的,它不仅仅是一个压缩文件,而且在这个文件的开头部分内嵌有gzip解压缩代码。当zImage
2014-04-25 22:00:37 1207
原创 嵌入式 在kernel中增加自己的驱动的顺序
内核的源码树目录下一般都会有两个文文:Kconfig和Makefile。分布在各目录下的Kconfig构成了一个分布式的内核配置数据库,每个Kconfig分别描述了所属目录源文件相关的内核配置菜单。在内核配置make menuconfig(或xconfig等)时,从Kconfig中读出配置菜单,用户配置完后保存到.config(在顶层目录下生成)中。在内核编译时,主Makefile调用这个.con
2014-04-25 21:48:04 898
原创 嵌入式 linux中的jiffies变量小结
全局变量jiffies用来记录自系统启动以来产生的节拍的总数。启动时,内核将该变量初始化为0,此后,每次时钟中断处理程序都会增加该变量的值。一秒内时钟中断的次数等于Hz,所以jiffies一秒内增加的值也就是Hz。 系统运行时间以秒为单位,等于jiffies/Hz。注意,jiffies类型为无符号长整型(unsigned long),其他任何类型存放它都不正确。将以秒为单位的时间转
2014-04-25 11:35:10 1681
转载 嵌入式 深入剖析Linux内核定时器实现机制
【摘要】本文详解了Linux内核的定时器实现机制。具体分析了定时器的分级组织结构,以及在此基础之上的插入、更新、扫描执行等过程。其动态刷新维护的机制值得借鉴。然后介绍了内核定时器相关的API。【关键字】内核定时器,分级结构,定时器迁移刷新,DEFINE_TIMER,init_timer,setup_timer,add_timer,mod_timer,del_timer1
2014-04-25 11:30:12 1295
原创 嵌入式 初识内核中EXPORT_SYMBOL宏
linux30的“/prob/kallsyms”文件对应着内核符号表,记录了符号以及符号所在的内存地址。模块可以使用如下宏导出符号到内核符号表:[c-sharp]view plaincopyprint?EXPORT_SYMBOL(符号名); EXPORT_SYMBOL_GPL(符号名) EXPORT_SYMBOL(符号名);EXPORT_SYM
2014-04-24 21:17:13 1055
转载 嵌入式 在uboot中添加硬件看门狗小示例
2Uboot添加硬件看门狗uboot中默认看门狗策略由两个宏CONFIG_HW_WATCHDOG和CONFIG_WATCHDOG来使能。此策略是在代码执行中的不同阶段,添加喂狗代码。这种喂狗方法会使代码很乱,uboot中到处都充斥的喂狗代码。另外这种方法对代码执行时间是敏感的,如果有段代码执行时间很长(如搬运code),则需要添加喂狗代码,很繁。uboot的默认策略比较适合
2014-04-24 10:40:39 3070
原创 嵌入式 uboot第二阶段启动流程小结以及在uboot添加自定义命令
uboot第一阶段分析完毕,根据第一阶段最后的分析,程序跳转到了ram中继续执行start_armboot这个函数。下面来看看这个函数主要完成了什么功能。首先要说明一个结构体,之前提到过,叫全局数据结构体,用于保存一些全局数据,在uboot第一阶段设置栈指针时,其实就已经为这个结构体在内存中留出了空间,它的地址就是在堆的地址下方,栈的上方。全局数据结构体定义如下所示:typedef
2014-04-24 10:40:20 1424
原创 嵌入式 hi3518c平台uboot中start.s小结
/*====================================Hi3518c start.S Begin 2014-04-20=============================================*//* * armboot - Startup Code for ARM926EJS CPU-core * * Copyright (c) 2003
2014-04-23 17:25:54 2820
转载 嵌入式 kernel调试方法小结
kdb:只能在汇编代码级进行调试; 优点是不需要两台机器进行调试。 gdb:在调试模块时缺少一些至关重要的功能,它可用来查看内核的运行情况,包括反汇编内核函数。 kgdb:能很方便的在源码级对内核进行调试,缺点是kgdb只能进行远程调试,它需要一根串口线及两台机器来调试内核(也可以是在同一台主机上用vmware软件运行两个操作系统来调试)printk() 是调试内核代码时最常
2014-04-23 16:01:45 4161
原创 嵌入式 uboot常见汇编指令小结
在嵌入式开发中,汇编程序常常用于非常关键的地方,比如系统启动时初始化,进出中断时的环境保护,恢复等对性能有要求的地方。ARM指令集可以分为六大类,分别为数据处理指令、Load/Store指令、跳转指令、程序状态寄存器处理指令、协处理器指令和异常产生指令。ARM指令使用的基本格式如下: 〈opcode〉{〈cond〉}{S} 〈Rd〉,〈Rn〉{,〈operand2〉}
2014-04-20 17:13:44 1697
转载 嵌入式 arm指令小结二
ARM指令系统特点ARM指令系统属于RISC指令系统。标准的ARM指令每条都是32位长,有些ARM核还可以执行Thmub指令集,该指令集是ARM指令集的子集,每条指令只有16位。1 数据类型ARM处理器一般支持下列6种数据类型:l8位有符号字节类型数据;l8位无符号字节类型数据;l16位有符号半字类型数据;l16位无符号半字类型数据;l32位有符号字类型数据;
2014-04-20 17:12:30 2379
转载 嵌入式 arm指令小结一
ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令。一、跳转指令跳转指令用于实现程序流程的跳转,在ARM程序中有以下两种方法可以实现程序流程的跳转。Ⅰ.使用专门的跳转指令;Ⅱ.直接向程序计数器PC写入跳转地址值,通过向程序计数器PC写入跳转地址值,可以实现在4GB的地址空间中的任意跳转,在跳转之前
2014-04-20 17:11:14 2694
原创 嵌入式 hi3518c默认看门狗没有开启,uboot汇编start.s解析
/*====================================Hi3518c start.S Begin 2014-04-20=============================================*//* * armboot - Startup Code for ARM926EJS CPU-core * * Copyright (c) 2003
2014-04-20 17:04:29 2326 1
原创 嵌入式 hi3518c裸板烧写uboot简记以及内存初始化寄存器修改技巧
7、加载uboot.bin J-Link>loadbin g:\3518\uboot_tools\3518a.bin 0x80800000 Loading binary file... [g:\3518\uboot_tools\3518a.bin] Writing bin data into target memory @ 0x80800000. 8、设置uboot执行地址
2014-04-20 13:49:09 2580
原创 嵌入式 Qy_Kernel烧录指令
2014-04-14) ubootenv: setenv bootargs mem=64M console=ttyAMA0,115200 root=/dev/mtdblock3 rootfstype=jffs2 mtdparts=hi_sfc:256k(boot)ro,256k(env),3584k(kernel),11264k(rootfs) kernel: sf pro
2014-04-14 16:06:27 1427
原创 嵌入式 适合arm的内存泄漏检测方案
在Linux下些C语言程序,最大的问题就是没有一个好的编程IDE,当然想kdevelop等工具都相当的强大,但我还是习惯使用kdevelop工具,由于没有一个习惯的编程IDE,内存检测也就成了在Linux下编写程序的一个大问题。 是不是说没有一种内存检查工具能够在Linux使用呢,也不是,像valgrind工具还是相当不错的。他的下载地址是http://valgrind.org/down
2014-04-10 18:41:34 7759
原创 嵌入式 setsockopt设置socket—attr达到send立即发送不延时MTU
setsockopt编辑setsockopt()函数用于任意类型、任意状态套接口的设置选项值。尽管在不同协议层上存在选项,但本函数仅定义了最高的“套接口”层次上的选项。目录1简述2注释3操作特性4返回值5用法1简述编辑设置套接口的选项。#include #include
2014-04-10 13:52:17 4094
原创 嵌入式 HI3518c从sensor拿平均亮度决定红外是否开启
int joseph_get_avelum_from_sensor(void){ int qy_ret = 0; ISP_EXP_STA_INFO_S joseph_isp_exp_sta_info; memset(&joseph_isp_exp_sta_info,0,sizeof(ISP_EXP_STA_INFO_S)); qy_ret = HI_MPI_ISP_GetExp
2014-04-09 13:03:43 1951
原创 嵌入式 hi3518c,3g-sincom5360e平台pppd成功拨号联通3G示例
我的平台是HI3518C,3G模块是SINCOM,我的脚本是:root@njqy:/etc/ppp/peers# cat wcdmadebugnodetachlock/dev/ttyUSB3115200crtsctsusepeerdnsnoauthnoipdefaultnovjnovjccompnoccpdefaultrouteipcp-
2014-04-01 14:07:02 2384 4
tracepoint_lttng使用详解
2015-03-23
多路径multipath配置文档和相关概念
2015-01-07
ceph-fs-rpm-build
2014-12-08
ceph-cognize-docs_zh-v1.3
2014-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人