技術類問題
1. 在做周立功的基礎試驗的時候,發現程序開頭的文件說明與MAIN函數前面的函數注釋有時相同,有時不同,大家怎么看?我認為應該相同,放在開頭是為了閱讀方便。
ARM嵌入式系統試驗教程(一)P127
例子如下:
程序開頭的注釋:
/****************************************************************************
* 文件名:DATARET.C
* 功能:使用串口UART0接收上位機發送的數據,當接收到8個連續數據后,將接收計數值加一后輸
* 出LED1--LED8顯示,并將數據原封不動地發送回上位機。
* 說明:將跳線器JP8短接。
* 通訊波特率115200,8位數據位,1位停止位,無奇偶校驗。
****************************************************************************/
main函數之前的注釋:
/****************************************************************************
* 名稱:main()
* 功能:初始化串口,并等待接收到串口數據。
* 說明:在STARTUP.S文件中使能IRQ中斷(清零CPSR中的I位)。
****************************************************************************/
2. 函數的使用方法與函數的功能有區別嗎?我認為“使用方法”更直觀一些,指的是應該怎樣操作。“功能”指的是函數的輸入輸出描述。
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序列,推薦將其作為一個操作系統調用程序,指令調用。”其中“作為一個操作系統調用程序,指令調用。”這句話怎么理解?我的理解是“寫成一個函數,由軟件中斷調用。” 《ARM與嵌入式系統基礎教程》P57
5. “軟件的邏輯關系”是什么意思?是流程圖的復雜程度嗎? 《ARM與嵌入式系統基礎教程》P390
非技術類問題
1. 本人9月份要進入嵌入式LINUX的學習,大家能給推薦幾本書嗎?以通俗易懂為標準,適合于初學者,我已經學了UCOS-II,沒有分析源碼,也算有些基礎吧。謝謝!!
2. 本人已經基本學完了基于ARM核的單片機LPC2210,在操作系統上想從UCOS-II過渡到LINUX,請教大家學完LINUX大概需要多長時間(不包括分析源碼)?
3.我讀程序的方法是讀完一句就在旁邊寫上注解,讀完一個函數后寫出它的思路。請大家談談各自的方法吧,互相學習。謝謝!!