1.1 启动阶段分为3个,bl0,bl1,bl2。下面只是就功能方面对它们做说明,实际设计的时候,也许会对其具体功能做出调整,也就是说,这几个阶段的划分是就功能而言的,不能看得太死。
博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795
设备驱动程序是软件概念和硬件电路之间的一个抽象层,软件操作硬件的关键就是对寄存器的操作。笔者使用的S5PV210是IO与内存统一编址的,在裸机中直接操作IO端口的物理地址,而在驱动中必须使用虚拟地址。直接基于IO的虚拟地址用指针解引用的方式来读写有两种方式,静态映射和动态映射。除了可以直接将指针解引用的方式,内核中提供了专用的读写接口来读写寄存器。考虑到GPIO作为硬件资源,存在着被多个驱动使用,还有复用的问题,所以内核提供了GPIO驱动gpiolib框架来统一管控GPIO资源,gpiolib在内核中作为一个驱动所实现。
通过wind把SD卡格式化为FAT32模式 sudo fdisk -l //查看分区信息
S5PV210处理器中自带LCD控制器,控制LCD的显示,把 LCD 图像数据从一个位于系统内存的 video buffer 传送到一个外部的 LCD 驱动器接口。
本教程所使用的开发板是GEC210开发板,核心板资源概述:CPU:S5PV210,SDRAM:512MB,Flash:8MB,NandFlash:256MB。
嵌入式操作系统(EmbeddedSystem)是指以应用为中心、以计算机技术为基础,软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。举例来说,大到油田的集散控制系统和工厂流水线,小到家用VCD机或手机,甚至组成普通PC终端设备的键盘、鼠标、硬盘、Modem等均是由嵌入式处理器控制的。
启动一个程序,它是在芯片上电复位,以执行,块独立于操作系统而在。由于操作系统须要通过启动这个模块来载入和引导的。所以启动的英文术语是boot loader。我对boot loader的定义包含两部分:1.载入os 2. 为了让os可以正常执行所要做的硬件和软件初始化工作。
周末晚上好,今天继续给大家分享学习Uboot的文章。由于上班时间大部分是在写应用代码:web和c++的代码(web和c++,其实我没学多少,之前我只写几篇C++的文章,工作完全是被逼无奈。),平时只是调试一下硬件,在自己的印象里有好久没有玩开发板了,这不为了过瘾,一边学习的同时,又能够玩开发板,本次学习分享硬件平台是三星的s5pv210,这个开发板去年买来学习的,已经放了好久,在吃灰了,有好多板子都被我放在那里吃灰了,现在可能是由于没有玩了,像一只饥饥饿的材狼一样,好想玩;之前的文章里面也有介绍,自己之前在毕业之前系统学过一段时间的pcb,现在这个技能也好久没用了,手也是非常痒,hh ,那天有时间也来画画板玩。总之,一句话,把板子玩起来,不要吃灰!
–参考朱有鹏ARM裸机课程
在mmc subsystem中,把host controller的驱动都放在了/drivers/mmc/host目录下。
源码中会涉及到一部分SMBus相关内容,SMBus是Intel在I2C的基础上开发的类似I2C的总线,本文不探讨SMBus相关内容(其实说白了,还是懒QAQ)。笔者会大体上对I2C子系统的源码进行分析,如若分析的有出入,还望指出。
通过前两篇文章的介绍,我们已经把linux内核移植到了tiny210上,但是看到的现象都是通过超级终端来观察的,下面了,我们介绍一下led灯的移植,给大家一个更直观的感受。这篇文章主要的内容如下:
CPUFreq子系统位于 drivers/cpufreq目录下,负责进行运行过程中CPU频率和电压的动态调整,即DvFS( Dynamic Voltage Frequency Scaling,动态电压频率调整)。运行时进行CPU电压和频率调整的原因是:CMOS电路中的功耗与电压的平方成正比、与频率成正比(P∝fV2)因此降低电压和频率可降低功耗。 CPUFreq的核心层位于drivers/cpufreq/cpufreq,c下,它为各个SoC的CPUFreq驱动的实现提供了一套统一的接口,并实现了一套notifier机制,可以在 CPUFreq的策略和频率改变的时候向其他模块发出通知。另外,在CPU运行频率发生变化的时候,内核的 loops perify常数也会发生相应变化。
网络设备不同于字符设备和块设备,并不对应于/dev目录下的文件,应用程序通过 socket 完成与网络设备的交互,在网络设备上并不体现”一切皆文件”的设计思想。
参考手册 : S3C2440.pdf , 章节 : 7 CLOCK & POWER MANAGEMENT , Page 235;
非常久没有关注RTOS了,所以也一直没有更新。近期闲了,把GPIO I2C调通了。简单移植了Touch。在S5PV210上使用。
[导读] 前文分析了Linux设备驱动的驱动模型,本文来聊聊Platform_driver/Platform_device这个类。做嵌入式Linux的驱动,这个也是绕不开的,所以来学习分析总结一下。
大家好,又见面了,我是你们的朋友全栈君。常见的ARM嵌入式学习问答,设计者和学习者最关心的11个问题: 1. ARM嵌入式是学习硬件好还是学习软件好? 2. 嵌
嵌入式岗位,是介于硬件工程师和软件工程师之前的一个岗位。他的工作内容需要他既懂代码编写,也会硬件板子。
用火狐打开百度图片-->打开firebug-->输入GIF图-->搜索-->点击网络-->全部
这两天在友善的tiny210的实验板上移植了linux内核,正好和大家分享,同时也算是做个记录吧!首先介绍一下开发环境吧,这个在做移植的时候还是挺重要的。
现在来写下s5pv210的h264解码,这一章有些部分我理解的不是很透彻,只能写个大概了。希望看到的人能给出些意见,有些地方写错的还望指正出来!
相信最近两天大家都被微信头像的国庆版新装刷爆了朋友圈了,不少人都@微信官方,要求换装为国庆版头像,朋友圈也是各种生成链接满天飞。其实这个事情在小编看来没有那么复杂,这么简单的事情怎么好意思随便@,直接自己100行代码搞定。
多租户本质上就是SAAS,关于k8s的多租户,如果要实现到阿里云、腾讯云的规模,需要为每一个租户创建一个单独的k8s集群,那么需要考虑的不仅仅是k8s的问题,还要考虑如何调度整个k8s集群的问题,就是要在k8s之上再创建一层调度。
之前一直是将ARM的Linux环境搭建在虚拟机中,然后在主机Windows中开启虚拟机来进行使用。而如今早已习惯Linux的使用,也已经完全适应在Linux下的日常使用了,所以本次打算将虚拟机中的嵌入式环境转移到主机Linux中,主机Linux使用的是Ubuntu 18.04,ARM CPU采用的是S5PV210。嵌入式开发环境搭建相对还是比较繁杂,故在此做个记录。
eve-ng的虚拟机ova的硬盘只有38G,需要增加空间,在vmware直接扩展硬盘后,重启系统,使用fdisk -l可以看到硬盘扩大了,但文件系统并没有扩大,还需要将这些新增的空间扩展分配到某个文件系统才行。下面记录了整个扩展过程
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说服务器是干嘛的[服务器和客户端区别],希望能够帮助大家进步!!!
与管理计算实例相比,管理存储是一个明显的问题。PersistentVolume子系统为用户和管理员提供了一个API,该API从如何使用存储中抽象出如何提供存储的详细信息。为此,我们引入了两个新的API资源:PersistentVolume和PersistentVolumeClaim。
PV 的全称是:PersistentVolume(持久化卷),是对底层的共享存储的一种抽象,PV 由管理员进行创建和配置,它和具体的底层的共享存储技术的实现方式有关,比如 Ceph、GlusterFS、NFS 等,都是通过插件机制完成与共享存储的对接。
关于 PV 操作基本都是结合进程管理的前驱图来进行考察,历年以来,无论是软考还是操作系统的单独考试,占有很大的比重。今天我们总结两种在考试中常考的类型。一种是单线前驱图,即串联进程,另一种是多线前驱图,即并联进程。并联进程下又细分为两类:一种逐渐向后合并(进程趋于合并),另一种是前驱图逐渐向后展开。两种类型你都掌握了应试也就毫无问题了。
k8s最初用于管理无状态的服务,单随着越来越多的应用迁移的k8s平台,管理存储资源成为一个非常重要的功能。
我们对 PV 和 PVC 的几种状态应该不算陌生,但是在使用过程中可能也会产生一些疑问,比如为什么 PVC 变成 Lost 状态了,新创建的 PVC 如何能够绑定之前的 PV,我可以恢复之前的 PV 吗?这里我们就来对 PV 和 PVC 中的几种状态变化再次进行说明。
我们对 PV 和 PVC 的几种状态应该不算陌生,但是在使用过程中可能也会产生一些疑问,比如为什么 PV 变成 Failed 状态了,新创建的 PVC 如何能够绑定之前的 PV,我可以恢复之前的 PV 吗?这里我们就来对 PV 和 PVC 中的几种状态变化再次进行说明。
Kubernetes 项目引入了一组叫作 Persistent Volume Claim(PVC)和 Persistent Volume(PV)的 API 对象用于管理存储卷。
在Docker中我们知道,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中,常用的手段就是Volume数据卷。在K8S中,也提供了存储模型Volume,支持我们将应用中的数据持久化存储到容器中。
Kubernetes为了能更好的支持有状态应用的数据存储问题,除了基本的HostPath和EmptyDir提供的数据持久化方案之外,还提供了PV,PVC和StorageClass资源对象来对存储进行管理。
在使用存储时,为了提高数据操作的容错性,我们通常需要有对线上数据进行 snapshot ,以及能快速 restore 的能力。另外,当需要对线上数据进行快速的复制以及迁移等动作,如进行环境的复制、数据开发等功能时,都可以通过存储快照来满足需求,而 K8s 中通过 CSI Snapshotter controller 来实现存储快照的功能。
数据的持久化一直都是需要我们非常关心的问题,docker如此,K8s也不例外。在k8s中,有一个数据卷的概念。
在前面已经提到,容器的生命周期可能很短,会被频繁地创建和销毁。那么容器在销毁时,保存在容器中的数据也会被清除。这种结果对用户来说,在某些情况下是不乐意看到的。为了持久化保存容器的数据,kubernetes引入了Volume的概念。
Don't look forward to tomorrow, don't miss yesterday, to grasp today。不憧憬明天,不留念昨日,只把握今日。
k8s对有状态的容器应用或者需要对数据进行持久化的应用,在之前的篇章说过,可以将容器内的目录挂载到宿主机的容器目录或者emptyDir临时存储卷。另外,k8s还开放了两个资源,分别是PersistentVolume(PV)和PersistentVolumeClaim(PVC),这两个资源对象可允许k8s使用外部的存储设备。比如在生产环境中有一个专门的文件服务器,那么就可以使用PV对文件服务器的资源进行定义,比如总共有多少容量等,然后用PVC对PV资源进行申请,申请多少容量,然后再容器里引用PVC即可。
1、在node3中的hive的配置文件hive-site.xml增加自己的zookeeper集群属性(仅此一步) node3是用于hive集群中用于启动元数据存储的节点hive --service metastore
PV 的全称是:PersistentVolume(持久化卷),是对底层共享存储的一种抽象,PV 由管理员进行创建和配置,是一个全局资源,包含存储的类型,存储的大小和访问模式等。它和具体的底层的共享存储技术的实现方式有关,比如 Ceph、GlusterFS、NFS、hostPath 等,都是通过插件机制完成与共享存储的对接。
pod 中声明的 volume 生命周期与 pod 是相同的,以下有几种常见的场景:
PV 操作是由 P 操作和 V 操作组成的操作原语(这不废话 ),原语是不能中断的流程,可以理解为 Java 的事务,要么都执行,要么都不执行,不存在执行一半的情况。
PV 描述的,则是一个具体的 Volume 的属性,比如 Volume 的类型、挂载目录、远程存储服务器地址等。
PV可以设置节点亲和性。比如下图,local-storage-class-waitforfirstconsumer-pv-ubuntuc只能在节点ubuntuc上;local-storage-class-waitforfirstconsumer-pv-ubuntud只能在节点ubuntud上。
领取专属 10元无门槛券
手把手带您无忧上云