技术类问题
1. 在做周立功的基础试验的时候,发现程序开头的文件说明与MAIN函数前面的函数注释有时相同,有时不同,大家怎么看?我认为应该相同,放在开头是为了阅读方便。
ARM嵌入式系统试验教程(一)P127
例子如下:
程序开头的注释:
/****************************************************************************
* 文件名:DATARET.C
* 功能:使用串口UART0接收上位机发送的数据,当接收到8个连续数据后,将接收计数值加一后输
* 出LED1--LED8显示,并将数据原封不动地发送回上位机。
* 说明:将跳线器JP8短接。
* 通讯波特率115200,8位数据位,1位停止位,无奇偶校验。
****************************************************************************/
main函数之前的注释:
/****************************************************************************
* 名称:main()
* 功能:初始化串口,并等待接收到串口数据。
* 说明:在STARTUP.S文件中使能IRQ中断(清零CPSR中的I位)。
****************************************************************************/
2. 函数的使用方法与函数的功能有区别吗?我认为“使用方法”更直观一些,指的是应该怎样操作。“功能”指的是函数的输入输出描述。
3. 下面是周立功的基础试验程序中的一个函数,返回时无法停止在下一条语句,请问为什么?
3.
/******************************************************************************
*名称:uart0_ini()
*功能:通过设置相应的寄存器对串口0进行初始化
*入口参数:波特率,串口模式设置
*出口参数:初始化成功返回1,初始化失败返回0
*占用资源:变量bak,baud,set
*说明:输入串口模式的信息以及串口波特率,观察返回值
************************************************************************/
uint8 uart0_ini(uint32 baud,UARTMODE set)
{
uint16 bak;
if((baud==0||baud>115200)) /*参数过滤*/
{
return(0);
}
if((set.datab<5||set.datab>8))
{
return(0);
}
if((set.stopb==0||set.stopb>2))
{
return(0);
}
if(set.parity>4)
{
return(0);
}
U0LCR=0x80; /*设置串口波特率*/
bak=(Fpclk>>4)/baud;
U0DLM=bak>>8;
U0DLL=bak&0xff;
bak=set.datab-5; /*设置串口模式*/
if(set.stopb==2)
{
bak|=0x04;
}
if(set.parity!=0)
{
set.parity--;
bak|=0x08;
}
bak|=set.parity<<4;
U0LCR=bak;
U0FCR=0x81;
U0IER=0x01;
return(1);
}
4. 学习中遇到这样一句话:“为了允许用户模式程序使用IMB序列,推荐将其作为一个操作系统调用程序,由SWI指令调用。”其中“作为一个操作系统调用程序,由SWI指令调用。”这句话怎么理解?我的理解是“写成一个函数,由软件中断调用。” 《ARM与嵌入式系统基础教程》P57
5. “软件的逻辑关系”是什么意思?是流程图的复杂程度吗? 《ARM与嵌入式系统基础教程》P390
非技术类问题
1. 本人9月份要进入嵌入式LINUX的学习,大家能给推荐几本书吗?以通俗易懂为标准,适合于初学者,我已经学了UCOS-II,没有分析源码,也算有些基础吧。谢谢!!
2. 本人已经基本学完了基于ARM核的单片机LPC2210,在操作系统上想从UCOS-II过渡到LINUX,请教大家学完LINUX大概需要多长时间(不包括分析源码)?
3.我读程序的方法是读完一句就在旁边写上注解,读完一个函数后写出它的思路。请大家谈谈各自的方法吧,互相学习。谢谢!!