上一篇文章介绍了S3c2440的中断体系结构,今天我们来分析一下GNU-uC/OS-II在S3c2440上中断的实现. 首先找到IRQ的中断的向量,位于 2440init.S : OK ,我们通过名字找到了这个函数: OS_CPU_IRQ_ISR: STMFD SP!, {R1-R3} MOV R1, SP ADD SP, SP, #12 SUB R2, LR, #4 MRS R3, SPSR MSR CPSR_cxsf, #SVCMODE|NOINT STMFD SP!, {R2} STMFD…
uC/OS II(Micro Control Operation System Two)是一个可以基于ROM运行的.可裁减的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,是和很多商业操作系统性能相当的实时操作系统(RTOS).ucos由于它的开源性得到了几位广泛的应用.我这次阅读的主要目的也是通过它加深自己对操作系统相关概念的认识. 一.ucos的代码结构 由于ucos可以在不同平台上移植,其代码分为于处理器无关的的代码和与应用程序相关的代码.具体如下图: : 二.uc…
SOPC开发流程之NIOS II 处理器运行 UC/OS II 这里以在芯航线FPGA学习套件的核心板上搭建 NIOS II 软核并运行 UCOS II操作系统为例介绍SOPC的开发流程. 第一步:建立 Quartus II 工程 建立 Quartus II 工程时需要注意以下几点 1. 器件选择为 EP4CE10F17C8N: 2. 工程路径中不得出现非法字符(空格和中文字符): 3. 开发工具选择 Quartus II 11.0及以上,这里我选择的版本为 Quartus II 15.1. 4…
一.移植环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二.移植步骤 本次移植的功能特点包括: 支持Nand Flash读写 支持从Nor/Nand Flash启动 支持CS8900或者DM9000网卡 支持Yaffs文件系统 支持USB下载(还未实现) . 了解u-boot主要的目录结构和启动流程,…
今天学习了uC/OS II的任务切换,知道要实现任务的切换,要将原先任务的寄存器压入任务堆栈,再将新任务中任务堆栈的寄存器内容弹出到CPU的寄存器,其中的CS.IP寄存器没有出栈和入栈指令,所以只能引发一次中断,自动将CS.IP寄存器压入堆栈,再利用中断返回,将新任务的任务断点指针弹出到CPU的CS.IP寄存器中,实现任务切换.虽然明白个大概,但是其中的细节却有点模糊,为什么调用IRET中断返回指令后,弹入CPU的CS.IP寄存器的断点指针是新任务的断点指针,而不是当前任务的,UCOS II是如…
一.开发环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二.背景知识 1. LCD工作的硬件需求:    要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器.在通常情况下,生产厂商把LCD驱动器会以COF/COG的 形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S…
今天在windows环境下安装IOS虚拟机,安装过程中报了一个错:“OS X Base System ”上没有足够的空间来进行安装.如图: 之后的解决办法是:点击上方的[实用工具]->[磁盘工具],显示如下: 选择下方的[VMware virtual SA……],然后点击上方的[抹掉]按钮,弹出弹框: 填入名称后,点击弹框中的[抹掉]按钮,然后关闭磁盘工具.在安装页面可以看到可使用的硬盘: 选择该硬盘,点击[继续]按钮,即可继续安装. from:https://blog.csdn.net/adm…
import os str1 = "grsdgfd" str2 = "wddf" str3 = "gddgs" # print(str1 + str2 + str3) ret = os.path.join(str1,str2,str3) print(ret)结果:grsdgfd\wddf\gddgs os.path.dirname返回上一级目录相当于os.path.split(path) import os str1 = "grsdgf…
嵌入式Linux之我行,主要讲述和总结了本人在学习嵌入式linux中的每个步骤.一为总结经验,二希望能给想入门嵌入式Linux的朋友提供方便.如有错误之处,谢请指正. 共享资源,欢迎转载:http://hbhuanggang.cublog.cn 一.开发环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二.相关概念 1.平台设备:通常在Linux中,把SoC系统中集成…
由于工作的原因,对SPI的理解最为深刻,也和SPI最有感情了,之前工作都是基于OSEK操作系统上进行实现,也在US/OS3上实现过SPI驱动的实现和测试,但是都是基于基本的寄存器操作,没有一个系统软件架构的思想,感觉linux SPI驱动很强大,水很深,废话少说,SPI总线上有两类设备:一类是主机端,通常作为SOC系统的一个子模块出现,比如很多嵌入式MPU中都常常包含SPI模块.一类是从机被控端,例如一些SPI接口的Flash.传感器等等.主机端是SPI总线的控制者,通过使用SPI协议主动发起S…
一.开发环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand, Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2 二.背景知识 1. LCD工作的硬件需求:    要使一块LCD正常的显示文字或图像,不仅需要LCD驱动器,而且还需要相应的LCD控制器.在通常情况下,生产厂商把LCD驱动器会以COF/COG的形式与LCD玻璃基板制作在一起,而LCD控制器则是由外部的电路来实现,现在很多的MCU内部都集成了LCD控制器,如S3…
Thrift 0.9.1 官方文档中对于Mac OS X上的安装描述适合 10.8,但不适用于10.9. Homebrew  macport 默认都不能在 10.9上安装Thrift 0.9.1成功 经过实验,安装步骤如下:(安装步骤中如果出现缺少目录的提示,就手动创建目录) 1.安装 autoconf2.65 automake 1.11.6,采用默认安装方式 2.设置java环境变量 JAVA_HOME /System/Library/Frameworks/JavaVM.framework/H…
(之前写过一篇类似的文章,当时传输文件用的是ftp,因为项目觉得ftp不够安全所以这次换成了scp,同时对脚本的一些地方也做了一些调整) 其实做这个东西还是因为项目的需求,需要获取某些机器(目前主要是linux,aix,unix)上的os和db的信息,如果没有db的话给出提示信息,因为机器比较多,也是为了重复利用,因此写了这么一个shell脚本,脚本中要用到的一些关键命令,再前面几篇文章中都有介绍:awk,sed,export,sort:以及查找机器的os和db信息的命令.下面是整个代码: #!…
系统安装之前的准备工作及安装过程简介 前面我们已经提到,苹果电脑虽然已经采用了x86架构的Intel处理器,但其官方并不提供在非苹果电脑上安装Mac OS的支持.所以,要想在普通PC/笔记本电脑上安装Mac OS X,难免需要模拟和破解.当然,在此笔者声明一下泡泡网的观点,本文仅作用于技术讨论和交流,泡泡网并不推荐大家在普通PC/笔记本上安装Mac OS X操作系统,一是苹果公司本身并不提供支持,二是目前很难100%完美的驱动普通PC/笔记本的硬件. Mac OS X Snow Leopard的…
Linux 上可用的 C 编译器是 GNU C 编译器,它建立在自由软件基金会的编程许可证的基础上,因此可以自由发布.GNU C 是对标准 C 进行的一系列扩展,以增强标准 C 的功能. 1. 零长度和变量长度数组 GNU C 允许使用零长度数组,在定义变长对象的头结构时,这个特性非常有用.例如: struct var_data { int len; char data[0]; }; char data[0] 仅仅意味着程序中通过 var_data 结构体实例的 data[index] 成员可以…
概述 S3C2440A中的中断控制器接受来自60个中断源的请求.提供这些中断源的可以是内部外设,如DMA控制器.UART.IIC等等.在这些中断源中,UARTn.AC97和EINTn中断对于中断控制器而言是"或"关系(在这几个源中还可以有中断分支). 当从内部外设和外部中断请求引脚收到多个中断请求时,中断控制器在仲裁步骤后请求ARM920T内核的FIQ或IRQ. 总流程图如下: 程序状态寄存器(PSR)的 F 位和 I 位 如果 ARM920T CPU 中的 PSR 的 F 位被置位为…
s3c2440的异常向量表: IRQ中断地址是0x18.所以,根据之前的异常处理方式,我们编写启动文件: 为什么需要lr减4,可以参考这篇文章:http://blog.csdn.net/zzsfqiuyigui/article/details/23334177 这是为了保证,当cpu正在执行某条指令时被中断打断,中断返回的时候,要继续执行这条被打断的指令,如果不减去4,cpu处理完中断之后,将会在被打断执行的这条指令的下一条指令开始执行(因为lr_irq保存的是下一条指令执行的地址),就会丢失掉…
在 Mac 系统上, 安装 MySQL Server 通常是用 DMG 包在图形化界面下按提示安装, 此外 MySQL 还提供了 Compressed TAR Archive 二进制包安装方式, 即免安装解压执行版, 相比 DMG 包, 免安装版过程更为简洁, 纯命令行操作, 更符合码客们的折腾精神. 系统环境: OS X Yosemite 10.10.4 MySQL版本号: mysql-5.6.26-osx10.9-x86_64.tar.gz MySQL下载: http://dev.mysql…
文件结构 Makefile: CROSSCOMPILE := arm-linux- CFLAGS := -Wall -O2 -c LDFLAGS := -lm -lfreetype CC := $(CROSSCOMPILE)gcc LD := $(CROSSCOMPILE)ld OBJS := main.o \ font/font_manager.o \ font/font_gbk.o \ font/font_asc.o \ display/display_manager.o \ display…
用到的知识: 中断  等待队列  睡眠  select  poll  misc http://pan.baidu.com/s/1bneSG5h…
一.移植环境 主  机:VMWare--Fedora 9 开发板:Mini2440--64MB Nand,Kernel:2.6.30.4 编译器:arm-linux-gcc-4.3.2.tgz u-boot:u-boot-2009.08.tar.bz2 二.移植步骤 4)准备进入u-boot的第二阶段(在u-boot中添加对我们开发板上Nor Flash的支持).通常,在嵌入式bootloader中,有两种方式来引导启动内核:从Nor Flash启动和从Nand Flash启动.u-boot中默…
1. 安装PCRE Download latest PCRE. After download go to download directory from terminal. $ cd ~/Download $ tar xvzf pcre-8.34.tar.gz $ cd pcre-8.34 $ sudo ./configure --prefix=/usr/local $ sudo make $ sudo install 此步骤遇到的问题:因为mac上安装了不同版本的xcode导致不能安装,找不到…
在Mac和IPhone上分别运行下面的程序: NSLog(@"char size = %lu", sizeof(char)); NSLog(@"short int size = %lu", sizeof(short)); NSLog(@"int size = %lu", sizeof(int)); NSLog(@"long int size = %lu", sizeof(long)); NSLog(@"long lo…
1. OSTaskCreate()    OSTaskCreate()建立一个新任务,能够在多任务环境启动之前,或者执行任务中建立任务.注意,ISR中禁止建立任务,一个任务必须为无限循环结构.        源码例如以下: #if OS_TASK_CREATE_EN > 0                    /* 条件编译,是否同意任务的创建               */INT8U  OSTaskCreate (void (*task)(void *pd), /* 函数指针,void *…
个中断源的请求.提供这些中断源的是内部外设,如DMA控制器.UART.IIC等等.在这些中断源中,UARTn.AC97和EINTn中断对于中断控制器而言是“或”关系.任意一个中断发生都会触发总中断 当从内部外设和外部中断请求引脚收到多个中断请求时,中断控制器在仲裁步骤后请求ARM920T内核的FIQ或IRQ. 仲裁步骤由硬件优先级逻辑决定并且写入结果到帮助用户通告是各种中断源中的哪个中断发生了的中断挂起寄存器中. 中断源有两种,一种是直接中断源,比如触摸屏中断,还有一种是带子中断的中断,类似于串…
Reverse Linked List I Question Solution Reverse a singly linked list. Reverse Linked List I 设置三个指针即可,非常简单: /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ cla…
在系统关于中查询mac的usb的厂商ID 如id为0x2717 执行echo 0x2717 >> ~/.android/adb_usb.ini 即可…
安装nginx brew install nginx sudo nginx 测试安装 在浏览器打开下面的链接地址 http://localhost:8080 nginx.conf配置 # HTTPS server # #server { # listen 443 ssl; # server_name localhost; # ssl_certificate cert.pem; # ssl_certificate_key cert.key; # ssl_session_cache shared:S…
0.准备假设homebrew已经安装好没安装的需要先安装,见下面链接http://brew.sh/ 1.安装PostgreSQL$ brew tap homebrew/services$ brew install postgresql查看安装的版本$ pg_ctl -V做为服务启动,停止将start改为stopbrew services start postgresql不做为服务启动pg_ctl -D /usr/local/var/postgres start我这里选择安装为服务 访问缺省数据库…
      μC/OS II(Micro-Controller Operating System Two)是一个可以基于ROM运行的.可裁剪的.抢占式.实时多任务内核,具有高度可移植性,特别适合于微处理器和控制器,适合很多商业操作系统性能相当的实时操作系统(RTOS).为了提供最好的移植性能,μC/OS II最大程度上使用ANSI C语言进行开发,并且已经移植到近40多种处理器体系上,涵盖了从8位到64位各种CPU(包括DSP). μC/OS II可以简单的视为一个多任务调度器,在这个任务调度器…