s3c2440
_-ARCHER-_
24届毕业于西安电子大学的渣渣工程师一枚
展开
-
S3C2440 开发板实战(11):同步互斥
同步互斥原子操作实现定义原子变量获得锁释放锁总驱动函数实验信号量实现定义信号量获得锁释放锁总驱动函数实验本文没有讲同步互斥的基础知识,基础知识可以移步至:嵌入式操作系统(3):同步和互斥原子操作实现目的:防止两个进程同时打开同一个文件。在后一个进程打开文件时自行退出。定义原子变量定义原子变量v并且初始化为1atomic_t canopen = ATOMIC_INIT(1);获得锁对原子变量进行自减操作来判断是否有进程正在打开目标文件,若有恢复原子变量并返回-1(-EBUSY)。if(!at原创 2020-07-08 19:02:46 · 197 阅读 · 0 评论 -
S3C2440 开发板实战(10):signal & async 异步通信
通信进程之间发送信号asyn由上两篇博客中可以看到按键输入的信号可以通过查询、中断、poll方式进行。本篇学习的是通过异步通信对进程之间发送信号这里我们使用 kill 命令,在进程与进程之间进行传输信号。比如杀死一个进程也是通过进程之间发送信号:#kill -9 pid相对应的如果要发送信号,则要注册信号处理函数(和注册中断服务函数类似),并且编写一个信号服务函数,然后写一个一直休眠的函数就ok了。应用程序 signal.c 代码如下:#include<stdio.h>#incl原创 2020-07-08 09:14:19 · 235 阅读 · 0 评论 -
S3C2440 开发板实战(9):poll机制
poll内核执行poll过程总代码内核:linux -2.6.22.6内核执行poll过程从代码的角度来看,poll机制是通过应用程序调用**poll()函数,配合驱动函数中相对应的drv_poll()函数配套使用的。函数执行的入口当然是应用程序中的poll()函数,接着进入内核中的sys_poll()**函数,poll机制的函数在路经:linux/fs/select.c下,原代码如下:739 asmlinkage long sys_poll(struct pollfd __user *ufds,原创 2020-07-06 20:25:54 · 753 阅读 · 0 评论 -
S3C2440 开发板实战(8):中断驱动
中断驱动按键按键驱动按键在之前LED驱动基础上进行修改,通过裸机的学习可以知道只是将IO口属性修改为输入。则以文件类的read()函数对输入的按键值进行读取。进入文件类的定义源代码可以查找到以下关于read()的原函数定义代码:ssize_t (*read) (struct file *, char __user *, size_t, loff_t *);所以根据要求将read()函数编写为以下形式#include <linux/module.h>#include <linux原创 2020-06-26 14:35:52 · 213 阅读 · 0 评论 -
S3C2440 开发板实战(7):字符设备驱动框架+LED驱动
在学习驱动的时候我遇到了很多问题,所以我的学习路线是这样的:编写驱动发现.ko文件需要放入开发板的目录中,然后就学习通过nfs创建共享文件,在配置nfs时发现网络没有连接上,所以就学习怎样配置IP地址,在传输完.ko文件后,发现自动生成不了dev nod,在经过一番寻找问题后发现是文件系统没配置好,所以我又配置了一遍mdev。最终成功!(耗时2天呀。)目录一、“简化版”驱动文件框架1.1. 编写驱动文件1.2. 测试二、“改进版”驱动文件框架2.1. 改进驱动文件2.2.配.原创 2020-06-17 16:09:44 · 492 阅读 · 0 评论 -
S3C2440 开发板实战(6):网络配置 + 设置NFS
这篇的主要目的是将PC端(server)和开发板端(client)之间共享文件。事先声明:本人的PC端是直接安装Ubuntu系统的,所以在操作的时候没有虚拟机这个概念。本文所操作的系统,均基于上一篇所讲的最小根文件系统开发。一、硬件连接唯一要求:client的网线应该连接上server或者是给server提供服务的router。比如说我的硬件配置:开发板连接网线至PC端,PC端连接无线网络。(建议配置)二、IP地址设置唯一要求:client的网段应该和server的网络号一样.原创 2020-06-15 20:21:36 · 333 阅读 · 0 评论 -
S3C2440 开发板实战(5):定时器中断
查看手册定时器中断也是在外部中断模式 (irq)下的异常,所以在上一篇外部中断的现有程序上进行修改,重复部分不再赘述。目录一、定时器大体结构二、定时器中断程序设计I.初始化定时器中断II. 中断入口函数III. 设置定时器中断函数正文:一、定时器大体结构查看芯片手册,可以找到以下定时器结构框图从做到右看,对该图进行分析:(不考虑)Prescaler:定时器0和1共享一个8位分频器,而定时器2、3、4共享另一个8位分频器。分频器将输入的PCLK分频为:PCLK/原创 2020-06-09 01:34:44 · 892 阅读 · 0 评论 -
S3C2440 开发板实战(4):外部中断
目录1. ARM 工作模式2. ARM处理器的寄存器组织3. ARM处理器的异常及其相应过程I. 初始化异常II. 进入异常的操作(硬件自动操作)III. 进入中断IV. 跳出异常的操作4. ARM外部中断程序编写过程最近学了一系列的中断程序,就复习下顺便撸一篇文来分享下学习。以外部中断为例(之前单片机用的最多的)1. ARM 工作模式ARM体系结构(除了Cortex之外支持7种工作模式),取决于程序状态寄存器中低5位的值(在第二部分会详细讲到)• Us.原创 2020-06-08 16:52:03 · 788 阅读 · 0 评论 -
S3C2440 开发板实战(3):编译概念 + LED点亮闪烁
基于我原先有STM32等单片机的基础,内容是结合我所新学习到的知识进行书写,所以基础知识可能不会涉及到请见谅。一、LED点亮 我们直接通过C程序对寄存器进行操作(汇编语言使用尽量少),通过原理图可看出开发板上的LED对应的GPIO口为GPF4、5、6,所以这里首先以GPF4对应的LED进行点亮,从芯片手册寻找GPF4对应的寄存器(I/O port 章节),就可以看到SOC2440芯片控制IO口对应的寄存器为下图所示:GPIO寄存器 然后就是和单片机操...原创 2020-05-29 21:09:59 · 909 阅读 · 0 评论 -
S3C2440 开发板实战(2):start.S初认识 + SDRAM配置 + 重定位
2440执行程序的第一件事请就是执行start.S文件,所以这里来学习下最基本的启动文件。顺便说下,在U-boot里有专门对应各种芯片的start.S文件,在开发手册中的ARM章节可以看到S3X2440的ARM型号为ARM920,所以本文章讲解部分比较重要的启动程序(能够保证能够正常启动),在以后的博客中我会详细对他进行分析。一个最简单的start.S文件因该包括看门狗部分、时钟初始化部分以及程序代码定位部分。1、看门狗部分废话不多说,直接开始配置,首先就是要关闭暂时不使用的看门狗,找到看门原创 2020-05-30 11:10:54 · 920 阅读 · 2 评论 -
S3C2440 开发板实战(1): 烧录程序篇(纯Ubuntu环境)
我一个大三将要毕业的自动化学生,因为疫情在家接触了很多本专业求职的相关内容,最终基于自己的经历以及项目,选择了嵌入式这以行业,打算往linux嵌入式工程师方向走。所以之后会出一系列的学习相关的见解把。 为了学习方便就买了韦老师的JZ2440开发板,因为有做过关于STM32以及51单片机的项目,并且参加过三次电子设计大赛。但是感觉自己都是只学了个皮毛(学习嵌入式之后感觉自己真的只学了个皮毛),这里建议如果要往这个方向发展的大学生在校期间应该把微机学好(真的很有用),废话不多说,直...原创 2020-05-27 20:55:26 · 988 阅读 · 2 评论