上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页
  2012年11月22日
摘要: tftp在put上传的时候显示File not found的解决办法在linux下,不管使用的是哪一种super-server,inetd或者xinetd,默认情况下TFTP服务是禁用的,所以要修改文件来开启服务。根据(1)的安装方法,可以修改文件/etc/xinetd.d/tftp。主要是设置TFTP服务器的根目录,开启服务。修改后的文件如下:service tftp{ socket_type =dgram protocol =udp wait =yes user =root server =/usr/sbin/in.tftpd server_args =-s /home/lqm/tftpb 阅读全文
posted @ 2012-11-22 12:05 Daniel.G 阅读(2790) 评论(0) 推荐(0) 编辑
  2012年11月10日
摘要: 网上这类文章比较多,但是都不是很具体,刚好有门课结课论文要写这个,所以就总结了一下。以下的过程都是在ubuntu7.10上实际运行过的。手工制作交叉编译工具在制作工具开始前先要选好所需要的Binutils、Gcc、glibc等组件的相匹配的版本。当然,它们的版本匹配选择较为复杂,这些组件的维护与发行完全是各自独立的,不同的组件组合在一起时,并不能保证其正常工作,版本之间可能存在冲突或BUG。一般可以参考别人的经验,成功使用某种版本的组合制作出了交叉编译工具,那么这样的组合应该是可以使用的。如果使用的包的组合是没人用过的,那么只能通过不断调试修改进行制作。一开始请使用每个套件最新出来的稳定版本, 阅读全文
posted @ 2012-11-10 19:34 Daniel.G 阅读(4910) 评论(0) 推荐(0) 编辑
  2012年10月24日
摘要: 概念并发:多个执行单元同时被执行。竟态:并发的执行单元对共享资源(硬件资源和软件上的全局变量等)的访问导致的竞争状态。一 信号量信号量的实现也是与体系结构相关的,定义在<asm/semaphore.h>,struct semaphore类型用来表示信号量。1 定义信号量struct semaphore sem;2 初始化信号量void sema_init(struct semaphore *sem, int val) 该函数用于初始化设置信号量的初值,它设置信号量sem的值为val。void init_MUTEX(struct semaphore *sem)该函数用于初始化一个互斥 阅读全文
posted @ 2012-10-24 10:44 Daniel.G 阅读(608) 评论(0) 推荐(0) 编辑
  2012年10月22日
摘要: 用串口配置交换机的时候,出现的问题:用secureCRT建了一个串口COM1后,连接上开发板后,可以正确接受和显示串口的输出,但是按键输入无效。解决方法:Session Options -> Connection -> Serial -> Flow Control,将原先默认选中的 RTS/CTS取消掉,再重新connect开发板,再次连上后,此时就可以从键盘输入了。网上解析:【RS232的三种流控制模式】DTR/DSR:硬件上要有对应接口,软件上实现对应协议,才能实现此流控制。具体实现起来,一般好像是和RTS/CTS一直搭配使用。RTS/CTS:硬件上要有对应接口,软件上实 阅读全文
posted @ 2012-10-22 12:46 Daniel.G 阅读(1210) 评论(0) 推荐(0) 编辑
  2012年10月20日
摘要: 一 工作原理一般情况下,用户进程是不能访问内核的。它既不能访问内核所在的内存空间,也不能调用内核中的函数。系统调用是一个例外。其原理是进程先用适当的值填充寄存器,然后调用一个特殊的指令,这个指令会让用户程序跳转到一个事先定义好的内核中的一个位置,内核根据应用程序所填充的固定值来找到相应的函数。1 适当的值在文件(arch/arm/)include/asm/unistd.h中为每个系统调用规定了唯一的编号,这个号称为系统调用号 #define __NR_restart_syscall (__NR_SYSCALL_BASE+ 0) #define __NR_exit ... 阅读全文
posted @ 2012-10-20 20:55 Daniel.G 阅读(389) 评论(0) 推荐(0) 编辑
  2012年10月16日
摘要: * 程序是存放在磁盘上的一系列代码和数据的可执行映像,是一个静止的实体。* 进程是一个执行中的程序。它是动态的实体。* 进程是资源分配的最小单位* 线程是调度的最小单位** 进程四要素1 有一段程序供其执行。这段程序不一定是某个进程所专有,可以与其他进程共用。2 有进程专用的内核空间堆栈。3 在内核中有一个task_struct数据结构,即通常所说的“进程控制块”。有了这个数据结构,进程才能成为内核调度的一个基本单位接受内核的调度。4 有独立的用户空间。*** 进程描述:在Linux中,线程、进程都使用struct task_struct来表示,它包含了大量描述进程/线程的信息,其中比较重要的 阅读全文
posted @ 2012-10-16 20:19 Daniel.G 阅读(423) 评论(0) 推荐(0) 编辑
摘要: 时钟中断由系统的定时硬件以周期性的间间隔产生,这个间隔(即频率)由内核根 据HZ来确定,HZ是一个与体系结构无关的常数,可配置(50-1200),在X86平台,默认值为1000。每当时钟中断发生时,全局变量jiffies(unsigned long)就加1,因此jiffies记录了自linux启动后时钟中断发生的次数。驱动程序常利用jiffies来计算不同事件间的时间间隔。 定时器用于控制某个函数(定时器处理函数)在未来的某个特定时间执行。内核定时器注册的处理函只执行一次--不是循环执行的。内核定时器被组织成双向链表,并使用struct timer_list结构描述。struct timer_ 阅读全文
posted @ 2012-10-16 18:39 Daniel.G 阅读(255) 评论(0) 推荐(0) 编辑
摘要: Linux内核中,获取节点地址的函数list_entry()非常常用,由于其定义有点晦涩,先解析如下:list_entry的宏定义:#define list_entry(ptr, type, member) /((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))这个倒是不难理解:从一个结构的成员指针找到其容器的指针。但是正因为如此,我的第一感觉是,这个宏的名字应该更加抽象,名字似乎应该改称叫“寻找容器”一类的,查看list.h源代码,发现现在的定义是这样的:#define list_entry(ptr, t 阅读全文
posted @ 2012-10-16 17:55 Daniel.G 阅读(736) 评论(0) 推荐(0) 编辑
摘要: 简介:随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中。面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后,都将面临着同样的问题,即如何将源代码融入到 Linux 内核中,增加相应的 Linux 配置选项,并最终被编译进 Linux 内核。这就需要了解 Linux 的内核配置系统。随着 Linux 操作系统的广泛应用,特别是 Linux 在嵌入式领域的发展,越来越多的人开始投身到 Linux 内核级的开发中。面对日益庞大的 Linux 内核源代码,开发者在完成自己的内核代码后,都将面临着同样的问题 阅读全文
posted @ 2012-10-16 13:21 Daniel.G 阅读(469) 评论(0) 推荐(0) 编辑
摘要: 简介:良好的操作系统性能部分依赖于操作系统有效管理资源的能力。在过去,堆内存管理器是实际的规范,但是其性能会受到内存碎片和内存回收需求的影响。现在,Linux® 内核使用了源自于 Solaris 的一种方法,但是这种方法在嵌入式系统中已经使用了很长时间了,它是将内存作为对象按照大小进行分配。本文将探索 slab 分配器背后所采用的思想,并介绍这种方法提供的接口和用法。动态内存管理内存管理的目标是提供一种方法,为实现各种目的而在各个用户之间实现内存共享。内存管理方法应该实现以下两个功能:最小化管理内存所需的时间最大化用于一般应用的可用内存(最小化管理开销)内存管理实际上是一种关于权衡的 阅读全文
posted @ 2012-10-16 13:18 Daniel.G 阅读(308) 评论(0) 推荐(0) 编辑
上一页 1 ··· 4 5 6 7 8 9 10 11 12 下一页