Nios II software architecture analysis

副标题:无

作   者:蔡伟纲编著

分类号:

ISBN:9787560619224

微信扫一扫,移动浏览光盘

简介

  本书以Altera公司的技术资料为蓝本,结合作者多年的Nios软件开发经   验及长期在EDACN专业论坛Nios Ⅱ版块担任版主积累的心得,首先从复位、   中断、编程环境、设备驱动以及应用程序二进制接口等五个方面对Nios Ⅱ   软件架构进行横向揭密,接着又从汇编语法、makefile、链接脚本、调试手   段以及开发技巧等多个角度对NiosⅡ软件架构进行纵向解析,纵横交错层层   揭开了Nios Ⅱ软件架构的真面目,因而本书既可作为Nios Ⅱ嵌入式软件开   发的中高阶指导书,也可作为Nios Ⅱ软件开发手册。    本书书名虽为“Nios Ⅱ软件架构解析”,但内容涉及嵌入式软件开发   的方方面面,主要面向学习或从事嵌入式软件开发的学生和工程技术人员,   也可作为相关专业研究生和高年级本科生的教材。

目录

目录
第一部分 横向揭密
第1章 中断揭密篇
1.1 异常的概念
1.1.1 中断的引入
1.1.2 异常的引入
1.2 与异常相关的术语
1. application context(应用背景)
2. exception context(异常背景)
3. context switch(背景切换)
4. exception handler(异常hand1er)
5. exception overhead(异常开销)
6. hardware interrupt(硬件中断)
7. interrupt service routine(ISR,中断服务函数)
8. software exception(软件异常)
9. imp1ementation-dependent instruction(依赖于处理器具体实现的指令)
10. unimplemented instruction(未完成指令)
11. invalid instruction(无效指令)
1.3 NiosⅡ异常处理概述
1.4 NiosⅡ处理器的异常地址
1.5 NiosⅡ处理器支持的异常类型
1.6 NiosⅡ处理器的异常触发机理
1. 硬件中断的触发机理
2. 软件异常的触发机理
1.7 NiosⅡ处理器对异常的响应
1. 异常的硬件响应
2. 异常的软件响应
1.8 异常hand1er架构
1. 顶层异常handler
2. 硬件中断handler
3. 软件异常handler
4. 外设中断的ISR
1.9 中断向量表
1.10 中断控制器初始化
1.11 中断的调试
1.12 中断响应性能分析
1. 中断性能指标参数
2. 影响中断性能的因素
3. 中断性能测试实例
1.13 NiosⅡ异常处理小结
1.14 NiosⅡ异常处理注意事项
1. 软件异常与硬件中断返回地址的区别
2. 异常handler代码存储布局
3. 异常hand1er代码编译控制
1.15 源文件
1. alt_exception_entry.S
2. alt_irq_entry.S
3. alt_exception_trap.S
4. alt_exception_mu1div.S
5. alt_irq_register.c
6. alt_irq_handler.c
7. alt_irq_entry.h
8. alt_irq_table.h
9. alt_irq.h
10. alt_irq_vars.c
11. nios2.h
第2章 复位揭密篇
2.1 复位的概念
2.2 NiosⅡ处理器的复位地址
2.3 NiosⅡ处理器的复位响应
1. 复位的硬件响应
2. 复位的软件响应
2.4 NiosⅡ处理器的复位状态
2.5 NiosⅡ的启动代码
1. 代码段入口_start
2. 硬件描述层的C入口函数alt_main
2.6 NiosⅡ处理器的Bootloader
1. Bootloader承担的任务
2. Altera提供的Bootloader
3. Bootloader的模式
4. Elf2flash
2. 7NiosⅡ系统的Boot过程分析
1. 从EPCSFlash中Boot
2. 从CFIFlash中Boot
3. Bootloader源文件
2.8 NiosⅡ处理器复位小结
2.9 源文件
1. Crt0.S
2. alt_main.c
3. walt_sys_init.c
4. alt_set_args.h
5. alt_load.c
6. alt_load.h
第3章 HAL揭密篇
3.1 HAL系统库概览
1. 主要功能
2. 通用设备模型
3. C标准库——Newlib
3.2 基于HAL的项目架构
3.3 HAL源码的组织架构
1. HAL元件
2. HAL元件的目录结构
3. HAL头文件
4. HAL源文件
5. HAL外设头文件
3. 4HAL编程环境
1. 系统描述文件System.h
2. HAL定义的数据类型
3. UNIX风格接口函数
4. HAL文件系统
5. 应用程序入口
6. 存储空间布局
7. 堆和栈空间
8. 全局变量指针寄存器
9. 缓存(Cache)
10. 紧耦合存储器(Tightly-Coup1ed Memory)
第4章 外设驱动篇
4.1 使用HAL外设驱动
1. 使用HAL外设总体思路
2. HAL支持的外设
3. 使用字符模式设备
4. 使用文件子系统
5. 使用定时器设备
6. 使用Flash设备
7. 使用DMA设备
8. PIO驱动详解
9. ioctl函数
4.2 HAL外设自动初始化原理
1. 系统初始化文件alt_sys_init.c
2. alt_sys_init.c的生成
3. 宏定义*_INSTANCE和*_INIT
4.3 开发HAL外设驱动
1. 开发符合通用设备模型的HAL外设驱动
2. 开发自定义HAL外设驱动
4.4 集成HAL外设驱动
4.5 小封装驱动
4.6 命名空间
4.7 重载设备驱动
第5章 应用程序二进制接口篇
5.1 概述
5.2 数据类型约定
5.3 内存对齐约定
5.4 寄存器使用约定
1. 寄存器保护
2. Caller-Saved寄存器
3. Callee-Saved寄存器
5.5 Endianess
5.6 栈(stack)与帧(frame)空间
1. 帧结构
2. 消除帧指针
3. 帧空间的开辟与释放
5.7 函数参数与返回值接口
1. 函数参数
2. 函数返回值
5.8 栈空间代码示例
1. 源码
2. 反汇编代码
第二部分 纵向解析
第6章 IDE属性配置
6.1 系统库属性配置
1. 菜单操作
2. 属性配置示例
3. 属性介绍
6.2 C/C++Build属性配置
1. 菜单操作
2. 属性配置示例
3. 属性介绍
6. 3Preferences属性配置
1. 菜单操作
2. 属性配置示例
3. 属性介绍
第7章 软件调试技巧
7.1 观察寄存器1
7.2 观察变量
7.3 观察内存
7.4 观察表达式
7.5 设置断点
7.6 Watchpoint
7.7 在HAL源文件中设置断点
7.8 指令单步调试模式
7.9 观察复杂的结构变量
7.10 观察.Objdump文件
7.11 Trace
7.12 Profiling
第8章 软件开发技巧
8.1 优化代码尺寸
1. 使能编译优化选项
2. 使用小封装设备驱动
3. 减少文件描述器的数目
4. 使用/dev/null设备名
5. 使用UNIX风格的IO函数取代标准C函数
6. 使用精简版本NewLibC标准库
7. 消除未用的设备驱动
8. 使用_exit替代exit函数
9. 禁止指令仿真功能
8.2 开发和使用库文件
1. 库文件的优点
2. NiosⅡIDE支持的库项目类型
3. 创建库项目
4. 如何在NiosⅡIDE中使用库文件
8.3 使用自定义的LinkerScript
8.4 重载HAL源码
8.5 自定义代码和数据属性
8.6 使用asm/C/C++混合编程
1. C与C++混合编程范例
2. C与ASM混合编程范例
3. 内联汇编范例
第9章 软件架构中的预处理器
9.1 如何在NiosⅡIDE中控制全局预处理器
9.2 NiosⅡ软件架构中的预处理器
1. ALT_N0_B00TL0ADER
2. ALT_USE_SMALL_DRIVERS
3. ALTERA_AVALON_JTAG_UART_SMALL
4. ALT_EXCEPTION_STACK
5. ALT_STACK_CHECK
6. ALT_NO_INSTRUCTION_EMULATION
7. ALT_TRAP_HANDLER
8. ALT_NO_CLEAN_EXIT
9. NI0S2_ICACHE_SIZE
10. ALT_ASM_SRC
11. ALT_SIM_OPTIMIZE
12. NIOS2_HAS_DEBUG_STUB
第10章 软件架构中的特殊宏定义
10.1 语言符号粘贴操作符(##)
10.2 _ALT_LOAD_SECTIONS,_ALT_L0AD_SECT10NS,ALT_LOAD_SECTIONS
10.3 ALT_LOAD_SECTION_BY_NAME
10.4 <COMP0NENT_NAME>_INSTANCE
10.5 <COMPONENT_NAME>_INIT
第11章 汇编语言相关语法
11.1 NiosII汇编器的特殊宏
1. %lo
2. %hi
3. %hiadj
4. %gpre1
11.2 NiosII汇编器特殊宏的应用示范
1. 把一个32位的立即数IMMED32赋予寄存器
2. 在汇编指令中寻址全局变量
11.3 NiosII指令集
11.4 GCC汇编语言语法知识
第12章 链接脚本(LinkerScript)
12.1 链接脚本基本概念
12.2 链接脚本的相关语法
1. ENIRY
2. INCULDE
3. INPUT
4. OUTPUT_FORMAT
5. OUTPUT_ARCH
6. KEEP
7. PROVIDE
8. MEMORY
9. (.)
10. LOADADDR
11. SECTIONS
12. 3NiosII链接脚本中定义的符号
1. _alt_stack_pointer
2. _alt_stack_limit
3. _alt_exception_stack_pointer
4. _alt_exception_stack_limit
5. _alt_heap_start
6. _alt_heap_end
7. _bss_start
8. _bss_end
9. _gp
12.4 在源文件中使用链接脚本定义的符号
12.5 LinkerScript输入节点
1. 默认节点属性
2. 自定义节点属性
12.6 LinkerScript输出节点
12.7 LinkerScript逻辑段
12.8 LinkerScript如何控制代码的存储布局
12.9 NiosIIIDE自动生成的链接脚本
第13章 编译文件介绍
13.1 makefile相关文件
1. makefi1e.mk
2. app.mk
3. system.mk
4. generated_all.mk
5. app_rules.mk
6. system_rules.mk
7. generated_app.mk
8. common.mk
9. component.rnk
10. gnu_rules.mk
11. gtf_rules.mk
13.2 其他文件
1. ptf文件
2. stf文件
3. cdtbuild文件
第14章 处理器操作模式及寄存器
14.1 操作模式
1. Normal模式
2. Debug模式
14.2 通用寄存器
14.3 控制寄存器
1. status(ctl0)
2. estatus(ctll)
3. bstatus(ctl2)
4. ienable(ctl3)
5. ipending(ctl4)
6. cpuid(ctl5)
14.4 内建(bui1tin)函数
第15章 软件开发工具介绍
15.1 NiosII集成开发环境及其相关工具
1. NiosIIIDE
2. FlashProgrammer
3. Instructi0nSetSimulator
4. QuartusⅡProgrammer
15.2 Altera命令行工具
1. 命令行工具的位置
2. 命令行工具的使用
3. 命令行工具的帮助
4. NiosⅡIDE命令行工具
5. 文件转换工具
15.3 GNU编译器工具链
15.4 软件库和嵌入式软体元件
1. Hardware abstraction layer(HAL) system library
2. MicroC/0S-Ⅱ RT0S
3. Lightweight IP TCP/IP stack
4. NeWlib ANSI C standard library
5. Read-only zip file system
6. Examp1e designs
第16章 VerifyFailed小结
16.1 nios2-download介绍
1. 何时使用nios2-download工具
2. nios2-download的对象
3. nios2-download的操作步骤
4. nios2-download的工作原理
16.2 Verifyfailed的可能原因
1. 物理板的问题
2. NiosⅡ系统的软硬件不同步
3. FPGA未用的I/O口设置不正确
4. JTAG信号干扰
5. 目标地址不属于RAM类型的地址范畴
6. 目标地址没有与CPU的datamaster总线互连
7. 存储器的数据引脚应为双向10口
8. SDRAM的时序问题
9. NiosⅡ系统本身存在的缺陷
16.3 VerifyFailed解决方案
16.4 关闭verify功能
16.5 修改elf文件去除不要verify的部分
第17章 动态栈溢出检测功能
17.1 动态栈溢出检测的原理
17.2 动态栈溢出检测的实现
1. et寄存器
2. sp寄存器
3. 栈溢出检测的核心指令
4. 动态栈溢出检测的具体操作
17.3 独立异常栈
17.4 源文件
1. alt_stackh
2. alt_sbrk.c
参考文献

已确认勘误

次印刷

页码 勘误内容 提交人 修订印次

Nios II software architecture analysis
    • 名称
    • 类型
    • 大小

    光盘服务联系方式: 020-38250260    客服QQ:4006604884

    意见反馈

    14:15

    关闭

    云图客服:

    尊敬的用户,您好!您有任何提议或者建议都可以在此提出来,我们会谦虚地接受任何意见。

    或者您是想咨询:

    用户发送的提问,这种方式就需要有位在线客服来回答用户的问题,这种 就属于对话式的,问题是这种提问是否需要用户登录才能提问

    Video Player
    ×
    Audio Player
    ×
    pdf Player
    ×
    Current View

    看过该图书的还喜欢

    some pictures

    解忧杂货店

    东野圭吾 (作者), 李盈春 (译者)

    loading icon