ARM板的开发应用
文章平均质量分 77
king16304
这个作者很懒,什么都没留下…
展开
-
CAN总线开发实例
下面通过实例来说明CAN总线接口的使用方法。在本例中,有两个进程,其中一个进程负责报文的发送(标识符为0x11和0x22),另一个进程负责报文的接收和过滤(只接收标识符为0x11的报文)。#include#include#include#include#include#include#include#include#includeint main()转载 2016-08-30 16:45:04 · 2040 阅读 · 0 评论 -
(frame buffer -> fb0)屏幕设备内存映射操作(2)
/** * @file demo2.c * @Synopsis 实现设备文件映射内存,画正方形,及正方 * 形的上下移动,及左右,上下移动; * @author MrClimb * @version 1.1.0 * @date 2012-05-10 */#include #include #include #include #include转载 2016-08-15 14:47:36 · 535 阅读 · 0 评论 -
(frame buffer -> fb0)屏幕设备内存映射操作(3)
#include #include #include #include #include #include #include #include typedef unsigned char u8_t;/*这里为什么要写 整形呢 类型转换规律。 占用空间小的向占用空间大的转换 类型一样,一个有符号,一个无符号。向谁转换。 像无符号转换 */转载 2016-08-15 14:48:09 · 677 阅读 · 0 评论 -
(引用)LCD驱动移植及测试
TQ2440 LCD硬件东华TFT液晶屏(WXCAT35),配置为常用的16BPP(5:6:5)模式。参数如下图所示: static struct s3c2410fb_display smdk2440_lcd_cfg __initdata = {.lcdcon5 = S3C2410_LCDCON5_FRM565 |S3C2410_LCDCON转载 2016-08-15 14:48:57 · 317 阅读 · 0 评论 -
改变终端属性 实现非阻塞
/** * @file demo8.c * @Synopsis * 改变一个己打开文件的属性 * #include * int fcntl(int fd,int cmd,... arg ); * @param int fd * * @param int cmd command * 读取它的flag * F_GETFL(void) * 要是读就转载 2016-08-15 14:57:54 · 221 阅读 · 0 评论 -
CAN总线开发实例
下面通过实例来说明CAN总线接口的使用方法。在本例中,有两个进程,其中一个进程负责报文的发送(标识符为0x11和0x22),另一个进程负责报文的接收和过滤(只接收标识符为0x11的报文)。/* 1.报文发送程序 */#include #include #include #include #include #include #include #include转载 2016-08-22 11:37:30 · 9314 阅读 · 1 评论 -
ARM LINUX 扩展串口
----XR21V1414 USB转串口 ----16C554 总线扩展串口不同的项目,有些项目经常需要转串口。有两种方式,一种用USB去扩,另一种用16C554 去扩。这两种从本质上来说,是一样的。成本上也不相上下。如果两种方式在项目设计中都可以的话,建议采用总线的方式。因为扩展转载 2016-08-22 14:25:48 · 575 阅读 · 0 评论 -
arm linux启动流程二
一、概述在Linux系统里,假设有两处代码(比如不同线程的两个函数F1和F2)都要获取两个锁(分别为L1和L2),如果F1持有L1后再去获取L2,而此时恰好由F2持有L2且它也正在尝试获取L1,那么此时就是处于死锁的状态,这是一个最简单的死锁例子,也即所谓的AB-BA死锁。死锁导致的最终结果无需多说,关于如何避免死锁在教科书上也有提到,最简单直观的做法就是按顺序上锁,以破坏转载 2016-08-22 14:35:53 · 410 阅读 · 0 评论 -
arm linux启动流程三
一、概述如果仔细地阅读完初始化函数start_kernel,就会发现里面还有调用smp_processor_id()函数,这两个函数都是获取多处理器的ID,为什么会需要两个函数呢?其实这里有一个差别的,smp_setup_processor_id()函数可以不调用setup_arch()初始化函数就可以使用,而smp_processor_id()函数是一定要调用setup_arch()初始转载 2016-08-22 14:55:02 · 609 阅读 · 0 评论 -
arm linux启动流程五
一、概述程序启动时,stack_canary将随机选择的小整数值保存在返回地址保存位置之前。大部分缓冲溢出攻击是从内存地址的低位向高位覆盖写内存,所以为了覆写返回地址,必须覆写canary值。因此可使用返回地址在返回前查看canary值,从而确认是否发生栈缓冲溢出攻击。//初始化栈canary值,canary值用于防止栈溢出攻击的堆栈的保护字static __always_转载 2016-08-22 14:55:48 · 227 阅读 · 0 评论 -
arm linux启动流程四
一、概述debug_objects_early_init()函数用于内核的对象调试。依赖配置CONFIG_DEBUG_OBJECTS。二、相关结构体struct debug_bucket { struct hlist_head list; //挂载的是当前debug_obj对象 raw_spinlock_t lo转载 2016-08-22 14:57:03 · 374 阅读 · 0 评论 -
ARM-Linux时钟初始化
ARM-linux时钟初始化是从MACHINE_START中的map_io函数开始的,map_io函数中会调用s3c24xx_init_clocks(12000000);来进行,我们来看一下初始化过程static struct cpu_table *cpu;void __init s3c24xx_init_clocks(int xtal){ if (xtal转载 2016-08-22 14:58:16 · 435 阅读 · 0 评论 -
ARM与嵌入式linux的入门建议
由于很多人总问这个问题,所以这里做一个总结文档供大家参考。这里必须先说明,以下的步骤都是针对Linux系统的,并不面向WinCE。也许你会注意到,现在做嵌入式的人中,做linux研究的人远比做WinCE的人多,很多产家提供的资料也是以linux为主。我一直很难理解,其实WinCE的界面比linux的界面好看多了,使用起来也很方便,更为重要的是,WinCE的开发和Windows下的开发基本一样,学起转载 2016-08-22 14:59:01 · 310 阅读 · 0 评论 -
arm-linux的gdb移植
arm-linux的gdb移植分为两种情况.一种是交叉调试版。这一种模式是需要编译一个arm-linux版本gdbserver (GDB的stub模块).然后再编译一个X86版本交叉调试的gdb.为了与桌面版本身的gdb 区别开来,一般改名为 arm-linux-gdb。两者通过串口或者网络进行互联。还有一种是干脆把整个gdb移植成一个ARM的本地版。在开发板上直接用gdb来调试。前一种方转载 2016-08-22 14:59:58 · 212 阅读 · 0 评论 -
arm-linux内存页表创建
linux的内存(正式)页表是在内核代码执行到start_kernel函数后执行paging _init函数建立的,这里要注意一个事情就是说,这里paging_init函数可以正常创建内存页表的条件有两个:1、 meminfo已初始化:即初始化物理内存各个node的各个bank,一般对于小型arm嵌入式设备,不涉及多个内存就是一个node和一个bank;这部分转载 2016-08-22 15:00:43 · 370 阅读 · 0 评论 -
ARM Linux系统下如何修改动态IP为静态IP地址
很多人都不知道在ARM Linux系统下如何修改动态IP为静态IP地址,其实只要两个步骤就可以搞定。相对来说,这款MYD-SAM9X35开发板修改IP地址还是蛮简单的。首先,使用vi打开 /etc/network/interfaces 目录,命令如下:vi /etc/network/interfaces复制代码其次,将 “# Wired or wir转载 2016-08-23 21:18:12 · 1292 阅读 · 0 评论 -
(frame buffer -> fb0)屏幕设备内存映射操作(1)
/** * @file demo1.c * @Synopsis /dev/fb0 屏幕设备内存映射操作 * 1:当在ubuntu 下可能有的不存在此设备,需要进行相关参数配制。这里就不作详解了。 * 2:不过在打开此设备情况下,需要对该设备文件 * 进行权限设置sudo chmod 777 /dev/fb0 * 3:运行此程序时如果开启了图形界面功能,则需切换终端 *转载 2016-08-15 14:46:50 · 1409 阅读 · 0 评论