海思提供一在應用層測試gpio的函式,只需要將其使用,即可完成gpio的輸入輸出等功能測試,本文是測試一下海思gpio的輸入功能。
1、測試原始碼:
#include #include #include #include int gpio_test_in(unsigned int gpio_chip_num, unsigned int gpio_offset_num)
fprintf(fp, "%d", gpio_num);
fclose(fp);
sprintf(file_name, "/sys/class/gpio/gpio%d/direction", gpio_num);
fp = fopen(file_name, "rb+");
if (fp == null)
fprintf(fp, "in");
fclose(fp);
sprintf(file_name, "/sys/class/gpio/gpio%d/value", gpio_num);
fp = fopen(file_name, "rb+");
if (fp == null)
memset(buf, 0, 10);
fread(buf, sizeof(char), sizeof(buf) - 1, fp);
printf("%s: gpio%d_%d = %d\n", __func__,
gpio_chip_num, gpio_offset_num, buf[0]-48);
fclose(fp);
sprintf(file_name, "/sys/class/gpio/unexport");
fp = fopen(file_name, "w");
if (fp == null)
fprintf(fp, "%d", gpio_num);
fclose(fp);
return (int)(buf[0]-48);
}int gpio_test_out(unsigned int gpio_chip_num, unsigned int gpio_offset_num,
unsigned int gpio_out_val)
fprintf(fp, "%d", gpio_num);
fclose(fp);
sprintf(file_name, "/sys/class/gpio/gpio%d/direction", gpio_num);
fp = fopen(file_name, "rb+");
if (fp == null)
fprintf(fp, "out");
fclose(fp);
sprintf(file_name, "/sys/class/gpio/gpio%d/value", gpio_num);
fp = fopen(file_name, "rb+");
if (fp == null)
if (gpio_out_val)
strcpy(buf,"1");
else
strcpy(buf,"0");
fwrite(buf, sizeof(char), sizeof(buf) - 1, fp);
printf("%s: gpio%d_%d = %s\n", __func__,
gpio_chip_num, gpio_offset_num, buf);
fclose(fp);
sprintf(file_name, "/sys/class/gpio/unexport");
fp = fopen(file_name, "w");
if (fp == null)
fprintf(fp, "%d", gpio_num);
fclose(fp);
return 0;
}
int main(int argc, const char *ar**)
int gpio_chip_num = atoi(ar**[1]);
int gpio_offset_num = atoi(ar**[2]);
int gpio_out_val = atoi(ar**[3]);
int i = 0;
for(i=0;i<20;i++)
else
}printf("test_gpio over!\n");
return 0;
}
2、我使用的仍是傳參方式,下面的測試我使用的是是gpio3_1,所以傳參為 3 1 1。將上面的原始碼編譯成elf檔案,拷貝至開發板下。
3、執行該程式。
4、我將其連線至乙個io測試板子中,發現小燈在迴圈閃爍20次後結束,與預想的一樣。
至此即完成gpio的輸入測試,可以在此基礎上修改**,完成自己想要的功能。
一種新的測試理念
文章分類 軟體開發管理 效能測試可以增加一種新的測試理念,當我們做乙個破壞性測試時,確定乙個破壞點以及相關策略,會得到乙個期望的測試結果。這是測試系統的健壯性。但如果我們輸入的是乙個不確定的破壞點,該輸入會遵循業務邏輯自身繁殖和變異,會產生無法預知的破壞性時,我們這個測試就是不止對系統自身的健壯性的...
windows下安裝django的一種方法
django版本是1.3.1,壓縮包。1.首先將django 1.31壓縮包解壓,使其與python2.7在同一根目錄下 2.之後進入cmd,通過命令python setup.py install進行安裝。python2.7和django 1.3.1都是存放在本地的c盤 安裝成功以後,可以通過以下命...
Flutter實體與JSON解析的一種方法
vs code作為編輯器 1.首先,json物件與字串的轉換是使用json.encode和json.decode的,需要匯入import dart convert 這裡主要的自然不是這個,而是json物件和實體物件的轉換 當然,實際上json物件算是乙個map物件,直接通過鍵訪問就可以得到值,即通過...