
学习日志
idealearn
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2018.03.15 -软中断和硬中断
硬中断:1. 硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的IRQ(中断请求)。基于IRQ,CPU可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程)。2. 处理中断的驱动是需要运行在CPU上的,因此,当中断产生的时候,CPU会中断当前正在运行的任务,来处理中断。在有多核心的系统上,一个中断通常只能中断一颗CPU...转载 2018-03-30 17:26:43 · 208 阅读 · 0 评论 -
uboot | fsbl中如何启动SPI或者GPIO等外设
1、条件:基于XILINX uboot。2、使用SPI。其实SPI控制器使用,在每个步骤都可以使用,包括在fsbl等都可以。原理就是配置控制器的寄存器。在FSBL中使用SPI:(1)、初始化SPI控制器0或者1,具体看vavido中硬件。调用XSpiPs_Config *SpiConfig;XSpiPs Spi0SpiConfig = XSpiPs_LookupConfig(id)...原创 2018-09-09 19:07:50 · 2705 阅读 · 0 评论 -
uboot下通过读取script(存放在nandflash)用于启动加载
1、编辑好script nand read 0x1000000 0x180000 0x400000if fpga loadb 0 0x1000000 0x400000;then echo Init VDMA mw.l 0x40600010 1 mw.l 0x40600010 0...2、通过UBOOT的打包工具,mkimage将其打包bootnand.img 影像...原创 2018-09-09 19:08:09 · 1257 阅读 · 0 评论 -
设备树语法讲解
转自:https://www.cnblogs.com/xiaojiang1025/p/6131381.htmlLinux设备树语法详解概念Linux内核从3.x开始引入设备树的概念,用于实现驱动代码与设备信息相分离。在设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。引入了设备树之后,驱动代码只负责处理驱动的逻辑,而关于设备的具体信息存放到设备树...转载 2018-09-09 19:08:50 · 26802 阅读 · 7 评论 -
2018.03.28 -Linux 中的各种栈:进程栈 线程栈 内核栈 中断栈
转自: http://kyang.cc/栈是什么?栈有什么作用?首先,栈 (stack) 是一种串列形式的 数据结构。这种数据结构的特点是 后入先出 (LIFO, Last In First Out),数据只能在串列的一端 (称为:栈顶 top) 进行 推入 (push) 和 弹出 (pop) 操作。根据栈的特点,很容易的想到可以利用数组,来实现这种数据结构。但是本文要讨论的并不是软件层面的栈,而...转载 2018-03-30 17:26:08 · 272 阅读 · 0 评论 -
2018.03.27 -AMBA协议(AHB APB AXI等)\外设通信协议(SPI CAN等)
从最开始AMBA1.0版本定义的 高级系统总线(asb)和高级外设总线(apb)到最新版本 AMBA4.0中兼容AHB APB的同时,添加了AXI4规范(ARM 和 XILINX 共同制定的SOC内IP互联的规范),高级跟踪总线 ATB,等。AHP APB AXI等都可以认为是作用域CPU内部的总线协议或者说规范,然而我们会常提到外设通信的SPI CAN总线,实际是SPI控制器或者CAN控制器和外...原创 2018-03-30 17:26:24 · 1698 阅读 · 0 评论 -
2018.03.14 - 进程上下文和中断上下文
一.什么是内核态和用户态内核态:在内核空间执行,通常是驱动程序,中断相关程序,内核调度程序,内存管理及其操作程序。用户态:用户程序运行空间。二.什么是进程上下文与中断上下文1.进程上下文:(1)进程上文:其是指进程由用户态切换到内核态是需要保存用户态时cpu寄存器中的值,进程状态以及堆栈上的内容,即保存当前进程的进程上下文,以便再次执行该进程时,能够恢复切换时的状态,继续执行。(2)进程下文:其是...原创 2018-03-30 17:26:49 · 327 阅读 · 0 评论 -
2018.03.19 -编译器优化以及volatile
首先看一下单词“volatile”的释义:volatile [ˈvɑlətl]adj. 易变的,不稳定的; (液体或油)易挥发的; 爆炸性的; 快活的,轻快的;下边是“C++ Primer”对volatile讲解的部分摘录:“当一个对象的值可能会在编译器的控制或监测之外被改变时,该对象应该声明为volatile。因此,编译器执行的某些例行优化行为不能应用在已经指定为volatile的对象上……v...转载 2018-03-30 17:26:31 · 307 阅读 · 0 评论 -
2018.03.19 -原子操作和原子变量
原子操作 原子操作指的是不可再分的指令操作,即在执行原子操作时不可能被打断,要么原子操作没有执行,要么已经执行完毕。 原子操作的实现必须需要硬件的支持,操作系统仅仅是在硬件指令的基础之上进行一次封装。对于没有实现原子操作的硬件,则需要操作系统从软件算法层面进行支持。linux下的实现 linux下原子操作的数据结构是atomic_t,其定义放在<linux...原创 2018-03-30 17:26:37 · 1423 阅读 · 0 评论 -
2018.03.16 - 为什么中断处理函数中不能出现阻塞
1、 中断处理的时候,不应该发生进程切换,因为在中断context中,唯一能打断当前中断handler的只有更高优先级的中断,它不会被进程打断,如果在 中断context中休眠,则没有办法唤醒它,因为所有的wake_up_xxx都是针对某个进程而言的,而在中断context中,没有进程的概念,没 有一个task_struct(这点对于softirq和tasklet一样),因此真的休眠了,比如调用了...原创 2018-03-30 17:26:15 · 4070 阅读 · 0 评论 -
如何使用xilinx sdk进行调试。
1、在FILE->NEW->新建应用程序。2、右键.elf文件,进行debus_as...进行调试。可以建立SPI等一些调试例子,来验证外设是否正常等。前提是如果需要加载fpga,则需要先进行FPGA的加载。在xilinx_tool中进行加载。...原创 2018-09-09 19:07:39 · 13081 阅读 · 0 评论