%# -*- coding: utf-8-unix -*-

\chapter{FAST软件编程入门指南}
\label{app:fast}

\subsection{前言}

本文档的主要阅读对象是首次使用FAST平台进行软件开发的工作人员。
文档主要描述了FAST架构软件的主要功能、如何获取软件代码、
介绍软件架构与对应代码结构、编译运行FAST代码。
详细介绍了FAST开发的主要使用函数，
描述了用户如何使用开发函数进行自己代码的开发流程，
最后提供一个完整的开发示例说明，供初学者学习使用。

\subsection{FAST能做什么}

FAST平台的主要功能是软硬件配合的网络分组处理功能，
硬件的主要作用是解析报文，对报文进行查表匹配，
进行指定的动作处理，然后分发报文。
报文分发可以直接转发到硬件端口，也可以送到CPU端的UA进程再处理，
UA处理完成后可以再通过硬件转发从端口输出。
软件的主要功能有两点：
一是对硬件的流表与对应动作进行配置，指定报文从硬件端口转发或送到CPU端的UA；
二是处理硬件无法处理的报文，处理完成后再转发到硬件输出。

FAST软件的编程主要包括UA编程、规则管理编程和寄存器访问控制编程。
UA编程主要处理硬件送到指定软件的分组数据；
规则管理编程主要是对硬件流表的读写管理；
寄存器访问控制编程主要是对硬件各寄存器资源的访问控制。
对硬件规则的读写与对硬件其他寄存器的读写需要了解FAST架构的虚拟地址空间定义。