ARM64的启动过程之(六):异常向量表的设定

作者:linuxer 发布于:2015-11-24 18:22 分类:ARMv8A Arch

本文主要描述了4.1.10内核初始化过程中如何初始化异常向量表。当然,首先需要准备一些异常的基础知识,这主要在第二章,如果你非常熟悉 ARM64的异常,那么可以忽略这个章节。 第三章描述了ARM64上各种形形色色的异常,第四章描述了ARM64上硬件提供的协助,最后一章描述了代码过程。

为了简化,本文对所描述的异常进行了限制:

1、所有的exception level的运行状态都是AArch64,不考虑异常发生在AArch32 excution state的时候

2、不考虑支持security extension,也就是说EL3状态的异常处理也不在本文描述

3、不考虑virtualization的支持,也就是说EL2的异常处理不会在本文描述

一句话总结,本文主要描述EL0和EL1这两个exception level下的异常向量表的设定。

阅读全文>>

标签: arm64 exception

评论(19) 浏览(64584)

Linux进程冻结技术

作者:itrocker 发布于:2015-11-24 15:01 分类:电源管理子系统

什么是进程冻结

进程冻结技术(freezing of tasks)是指在系统hibernate或者suspend的时候,将用户进程和部分内核线程置于“可控”的暂停状态。

为什么需要冻结技术

假设没有冻结技术,进程可以在任意可调度的点暂停,而且直到cpu_down才会暂停并迁移。这会给系统带来很多问题:

阅读全文>>

标签: Linux freeze

评论(48) 浏览(37818)

显示技术介绍(1)_概述

作者:wowo 发布于:2015-11-22 21:44 分类:显示

本文是显示子系统的第一篇文章,介绍嵌入式系统显示有关的硬件组成,进而拆分为相对独立的模块,以便在后续的文章中一一介绍。

阅读全文>>

标签: 显示 GPU 2D 3D

评论(10) 浏览(14043)

进化论、人工智能和外星人

作者:wowo 发布于:2015-11-15 22:16 分类:技术漫谈

标题有点混乱,主要是最近看书有些杂,从而使一些由来已久的疑惑渐有开朗之势,故而在这儿胡言乱语一番。

阅读全文>>

评论(10) 浏览(12365)

linux kernel内存回收机制

作者:itrocker 发布于:2015-11-12 20:37 分类:内存管理

无论计算机上有多少内存都是不够的,因而linux kernel需要回收一些很少使用的内存页面来保证系统持续有内存使用。页面回收的方式有页回写、页交换和页丢弃三种方式:如果一个很少使用的页的后备存储器是一个块设备(例如文件映射),则可以将内存直接同步到块设备,腾出的页面可以被重用;如果页面没有后备存储器,则可以交换到特定swap分区,再次被访问时再交换回内存;如果页面的后备存储器是一个文件,但文件内容在内存不能被修改(例如可执行文件),那么在当前不需要的情况下可直接丢弃。

阅读全文>>

评论(37) 浏览(35577)

linux cpufreq framework(5)_ARM big Little driver

作者:wowo 发布于:2015-11-10 22:04 分类:电源管理子系统

也许大家会觉得奇怪:为什么Linux kernel把对ARM big·Lttile的支持放到了cpufreq的框架中?

众所周知,ARM的big·Little架构,也称作HMP(具体可参考“Linux CPU core的电源管理(2)_cpu topology”中相关的介绍),通过在一个chip中封装两种不同类型的ARM core的方式,达到性能和功耗的平衡。这两类ARM Core,以cluster为单位,一类为高性能Core(即big core),一类为低性能Core(即Little core),通过它们的组合,可以满足不同应用场景下的性能和功耗要求,例如:非交互式的后台任务、或者流式多媒体的解码,可以使用低功耗的Little core处理;突发性的屏幕刷新,可以使用高性能的big core处理。

那么问题来了,Linux kernel怎么支持这种框架呢?

注1:本文很多理论性的表述,或多或少的理解并翻译自:“http://lwn.net/Articles/481055/”,感兴趣的读者可以自行阅读。

注2:本文基于linux-3.18-rc4内核,其它版本内核可能会稍有不同。

阅读全文>>

标签: Linux ARM cpufreq hmp big little

评论(35) 浏览(19003)

實作 spinlock on raspberry pi 2

作者:descent 发布于:2015-11-5 9:33

process 同步機制有 spinlock, mutex, semaphore, 我的學習方式是簡化再簡化, 然後用程式碼實作他們, 否則我只會有「名詞」上的理解, 而不會真的理解。有了 spinlock 就有了基本的 process 同步機制。

阅读全文>>

标签: spinlock

评论(0) 浏览(7824)

linux kernel内存碎片防治技术

作者:itrocker 发布于:2015-11-2 10:24 分类:内存管理

Linux kernel组织管理物理内存的方式是buddy system(伙伴系统),而物理内存碎片正式buddy system的弱点之一,为了预防以及解决碎片问题,kernel采取了一些实用技术,这里将对这些技术进行总结归纳。

阅读全文>>

标签: 内存碎片

评论(18) 浏览(31043)

ARM64的启动过程之(五):UEFI

作者:linuxer 发布于:2015-10-30 19:27 分类:ARMv8A Arch

在准备大刀阔斧进入start_kernel之际,我又重新review了一下head.S文件,看看是否有一些遗漏的知识点,很不幸,看到了 CONFIG_EFI这个配置项。当然,在一年前阅读kernel代码的时候就了解过相关的内容,但是,做为一个嵌入式工程师总是或多或少对其有些排斥, 因此习惯性的忽略掉CONFIG_EFI相关的代码,逃避总不是办法,在本文中,我们一起来探讨ARM64平台上UEFI相关的内容。

阅读全文>>

标签: arm64 UEFI

评论(5) 浏览(45199)

Linux 3.18U盘无法正确使用

作者:linglongqion 发布于:2015-10-28 16:20

U盘插入时,内核能正确识别到,但是无法挂载,查看dev下的设备文件为字符设备,而不是块设备:

打印如下:

usb 1-2: new high-speed USB device number 3 using atmel-ehci
Can not be start read in 1s
usb 2-2: new full-speed USB device number 3 using at91_ohci
usb 2-2: New USB device found, idVendor=2008, idProduct=2018
usb 2-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
usb 2-2: Product: Flash Disk     
usb 2-2: Manufacturer: USB2.0 
usb 2-2: SerialNumber: 001616
usb-storage 2-2:1.0: USB Mass Storage device detected
scsi host2: usb-storage 2-2:1.0
scsi 2:0:0:0: Direct-Access     USB2.0   Flash Disk       2.10 PQ: 0 ANSI: 2
sd 2:0:0:0: Attached scsi generic sg1 type 0
sd 2:0:0:0: [sdb] 2039808 512-byte logical blocks: (1.04 GB/996 MiB)
sd 2:0:0:0: [sdb] Write Protect is off
sd 2:0:0:0: [sdb] No Caching mode page found
sd 2:0:0:0: [sdb] Assuming drive cache: write through
(unknown ASC/ASCQ)
 sdb: sdb1
sd 2:0:0:0: [sdb] Attached SCSI removable disk

 

到dev下查看sdb文件属性:

crw-rw--rw--    1 root     root       8,  16 Oct  1 19:47 /dev/sdb
crw-------    1 root     root       8,  17 Oct  1 19:47 /dev/sdb1

?????奇怪!为什么不是块设备吗?但是在/sys/block中sdb是存在的,难道是内核配置的问题?但是在内核配置里,针对USB和SCSI对应的驱动支持都已经打勾!

求教各位前辈

 

标签: Linux 3.18 USB

评论(8) 浏览(13297)

Copyright @ 2013-2015 蜗窝科技 All rights reserved. Powered by emlog