Electronics 板


LINE

其实打这篇文章时, 我还不会在 uC-OS II 上写程式 XD (那怎麽敢打这篇文章 ?) ---- 一般OS的设计, 会透过一个 timer 产生 interrupt 用这个 interrupt 去呼叫 OS 起床 OS 可能会呼叫 scheduler 切换目前工作, 或是其他的 maintain routine 所以 1. 系统里一定会有一个 timer 负责产生中断 2. 中断的 ISR 会呼叫 OS 以我手边这片 NIOS 来讲, CPU 工作时脉 50Mhz timer 每 10ms 产生一个 tick (timer 中断), 每秒 100 次中断 也就是 tick 之间, CPU 一共有 0.5M cycles 可以做事 ---- 根据上面的机制, 我把 HAL (Hardware Abstraction Layer) 对应的程式码找出来 写成这篇 note 这个主题关系到大量的 source code 因为程式码是最好的说明书, 我把所有相关的 source code 列下来... Device Drivers [NIOS II]/ altera_hal/ HAL/ inc/ sys/ alt_alarm.h Device Drivers [NIOS II]/ altera_hal/ HAL/ inc/ sys/ alt_llist.h Device Drivers [NIOS II]/ altera_hal/ HAL/ inc/ priv/ alt_alarm.h Device Drivers [NIOS II]/ altera_hal/ HAL/ src/ alt_tick.c Device Drivers [NIOS II]/ altera_hal/ HAL/ src/ alt_alarm_start.c Device Drivers [SOPC Builder]/ altera_avalon_timer/ HAL/ src/ altera_avalon_timer_sc.c Debug/ SystemDescription/ alt_sys_init.c 相关的文件 Quartus II v7.1 Handbook Volumn 5: Embedded Peripherals 14 Timer Core Nios II Software Developer's Handbook 5-9 Using Timer Devices 5-10 System Clock Driver ---- 下面是我对 system tick 的理解 如果要了解这个主题, 可以照下面的顺序看 code alt_sys_init.c 这个档案是开机流程里重要的档案, 他会初始化很多硬体和软体 从这个档案可以看得到 System Clock (tick) 是怎麽被初始化的 ALTERA_AVALON_TIMER_INIT(name, dev) 呼叫以下的函数去初始化 timer alt_avalon_timer_sc_init(base addr, IRQ #, Freq of tick) sc 表示 system clock, 这是 timer 初始化函数 alt_sysclk_init(freq) 设定每秒有几个 tick -> freq=100 Set up timer control register { Interrupt Enable Continuous (non-stop) mode Timer GO } Set up timer ISR alt_irq_register(IRQ #, base, ISR-function) ISR-function 是 tick 中断会呼叫的... alt_avalon_timer_sc_irq(void *base, alt_u32 id) { IOWR_ALTERA_AVALON_TIMER_STATUS(base, 0); //clear interrupt ALT_LOG_SYS_CLK_HEARTBEAT(); alt_tick(); //每次中断都要呼叫 !! } 所以这个 alt_tick() 是一定要追踪的... !! alt_tick() @ alt_tick.c 这个函数可以分成两部分, 前半段在执行其他的 periodic ALARM 最後有一行很关键 ALT_OS_TIMER_TICK(); 这一行会去把 OS 叫起来, 相当重要 !!!! ---- 这篇 note 写到这里其实已经可以结束了 OS和硬体的连结已经藉着 ALT_OS_TIMER_TICK() 展现出来 这一系列 library 里, 还有一部份 code 值得研究 HAL 提供了 periodic ALARM 的支援, 实作的程式码值得一读 sys/alt_alarm.h priv/alt_alarm.h alt_llist.h alt_tick.c alt_alarm_start.c ---- 透过 linked-list, 利用一个 timer, 可以支援多个 periodic task 他的技巧简述如下... 1. alt_alarm (BIG_STRUCT) 是一个大的 struct 2. 这个 struct 的第一个 element, 是 struct linked-list 的 entry 3. struct linked-list 有两笔资料: *next, *previous 4. 只要在 data struct 的第一个 element 放上 struct linked-list 就可以给 alt_alarm (BIG_STRUCT) 提供 linked-list 支援 他的资料结构像下面那样 struct BIG_STRUCT { struct linked_list LIST data1 data2 data3 ... } struct linked_list { struct linked_list *next; struct linked_list *previous; } ---- 以下是'猜'的 以PC来说, 也有某个timer会固定产生 system tick 当 tick 出现, 会跳到类似 alt_tick() 这样的函数 这个函数很有可能由 BIOS 提供 alt_tick() 前半段执行一些 periodice ALARM BIOS 碰到 tick 的时候, 可能也跑些日常的 maintain 比如监控 CPU 温度, 监控风扇温度之类的 跑完以後, 才呼叫类似 ALT_OS_TIMER_TICK() 这样的东西 把控制权还给 OS 如果上面这样猜是对的, 那 HAL 部分程式码的地位 就有点像 PC 上的 BIOS 嗯... 随便乱猜... 有错请告诉我 如果有 BIOS 相关的资料可以看 (简介类的) 也请板友推荐, 谢谢 :) --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.113.138.231 ※ 编辑: lihgong 来自: 140.113.236.184 (08/17 12:47)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl 或 站内搜寻

TOP