完成試驗箱測試功能4,5,6以及SM3加密實驗的實現算法
掌握Z32安全模塊中斷的工做原理安全
一、打開「Z32開發指南\實驗4-GPIO0按鍵中斷」目錄的工程文件。編譯工程,產生後綴名爲.bin的可執行代碼。
二、下載程序
將實驗箱接入電源,用USB公對公線將實驗箱的USB接口鏈接到電腦的USB接口上,在電腦上找到「Z32開發指南\2.軟件資料\Z32下載調試工具」目錄打開Z32下載調試工具NZDownloadTool.exe。打開Z32的電源開關前,按住Reboot按鍵不放,兩次打開電源開關,Z32便可被電腦識別,進行下載調試。服務器
當左邊框出現「1設備已鏈接」,設備選擇中顯示芯片型號,此時就能夠下載程序了。網絡
點擊「下載」,左邊狀態提示框更新顯示「程序下載成功!」實驗4的程序就下載進Z32的實驗板上了。
實驗4的內容是按鍵中斷,12864顯示屏顯示字符。
關閉Z32電源開關,再打開,程序自動運行,此時能夠看到實驗現象:12864屏幕第一行顯示:「請按reboot按鍵:」
socket
掌握Z32安全模塊矩陣鍵盤的工做原理函數
一、打開「Z32開發指南\實驗5-矩陣鍵盤」目錄的工程文件。編譯工程,產生後綴名爲.bin的可執行代碼。工具
二、下載程序
將實驗箱接入電源,用USB公對公線將實驗箱的USB接口鏈接到電腦的USB接口上,在電腦上找到「Z32開發指南\2.軟件資料\Z32下載調試工具」目錄打開Z32下載調試工具NZDownloadTool.exe。打開Z32的電源開關前,按住Reboot按鍵不放,兩次打開電源開關,Z32便可被電腦識別,進行下載調試。學習
當左邊框出現「1設備已鏈接」,設備選擇中顯示芯片型號,此時就能夠下載程序了。測試
點擊「下載」,左邊狀態提示框更新顯示「程序下載成功!」實驗5的程序就下載進Z32的實驗板上了。
實驗5的內容是讀矩陣鍵盤鍵值並顯示。
關閉Z32電源開關,再打開,程序自動運行,此時能夠看到實驗現象:12864屏幕第一行顯示字符串加密
按下矩陣鍵盤上「A」鍵,屏幕第二行顯示「A」。
掌握Z32安全模塊定時器的工做原理
一、打開「Z32開發指南\實驗6-TIMER定時器」目錄的工程文件。編譯工程,產生後綴名爲.bin的可執行代碼。
二、下載程序
將實驗箱接入電源,用USB公對公線將實驗箱的USB接口鏈接到電腦的USB接口上,在電腦上找到「Z32開發指南\2.軟件資料\Z32下載調試工具」目錄打開Z32下載調試工具NZDownloadTool.exe。打開Z32的電源開關前,按住Reboot按鍵不放,兩次打開電源開關,Z32便可被電腦識別,進行下載調試。
當左邊框出現「1設備已鏈接」,設備選擇中顯示芯片型號,此時就能夠下載程序了。
點擊「下載」,左邊狀態提示框更新顯示「程序下載成功!」實驗6的程序就下載進Z32的實驗板上了。
實驗6的內容是定時器溢出中斷,控制LED燈以0.5Hz頻率亮滅,並將0~9秒循環計數顯示在12864顯示屏上。
關閉Z32電源開關,再打開,程序自動運行,此時能夠看到實驗現象:Z32核心板上的燈L2以0.5Hz頻率閃爍,12864屏幕上顯示「定時器測試:」,第二行循環顯示從0到9的秒計數值。
每隔1秒燈L2亮或滅一次,當計數值爲偶數時,燈L2亮,計數值爲奇數時,燈L2滅。
一、打開「Z32開發指南\實驗10-SM3」目錄的工程文件。編譯工程,產生後綴名爲.bin的可執行代碼。
二、下載程序
將實驗箱接入電源,用USB公對公線將實驗箱的USB接口鏈接到電腦的USB接口上,在電腦上找到「Z32開發指南\2.軟件資料\Z32下載調試工具」目錄打開Z32下載調試工具NZDownloadTool.exe。打開Z32的電源開關前,按住Reboot按鍵不放,兩次打開電源開關,Z32便可被電腦識別,進行下載調試。
當左邊框出現「1設備已鏈接」,設備選擇中顯示芯片型號,此時就能夠下載程序了。
點擊「下載」,左邊狀態提示框更新顯示「程序下載成功!」實驗10的程序就下載進Z32的實驗板上了。
實驗9的內容是SM3數據加密實驗。本實驗使用Z32內置函數庫實現加密算法。
咱們用9針串口線將Z32模塊的串口與電腦USB接口鏈接。
首先在電腦上打開串口助手,選擇對應的串口號,設置波特率爲115200,偶校驗(Even),而後打開串口。
關閉Z32電源開關,再打開,程序自動運行,此時能夠看到實驗現象:液晶屏上顯示「SM2實驗!請看串口助手」。
串口助手上提示:「請輸入須要雜湊的數據(64字節之內),並按A鍵確認」。
在字符串輸入框輸入數據「wsq」,點擊發送。
按下「A」鍵後進行,加密,串口調試助手顯示被雜湊加密後的數據。
串口助手顯示雜湊加密後數據
#include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> int main(int argc, char *argv[]) { int server_sockfd;//服務器端套接字 int client_sockfd;//客戶端套接字 int len; struct sockaddr_in my_addr; //服務器網絡地址結構體 struct sockaddr_in remote_addr; //客戶端網絡地址結構體 int sin_size; char buf[BUFSIZ]; //數據傳送的緩衝區 memset(&my_addr,0,sizeof(my_addr)); //數據初始化--清零 my_addr.sin_family=AF_INET; //設置爲IP通訊 my_addr.sin_addr.s_addr=INADDR_ANY;//服務器IP地址--容許鏈接到全部本地地址上 my_addr.sin_port=htons(8000); //服務器端口號 /*建立服務器端套接字--IPv4協議,面向鏈接通訊,TCP協議*/ if((server_sockfd=socket(PF_INET,SOCK_STREAM,0))<0) { perror("socket"); return 1; } /*將套接字綁定到服務器的網絡地址上*/ if (bind(server_sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))<0) { perror("bind"); return 1; } /*監聽鏈接請求--監聽隊列長度爲5*/ listen(server_sockfd,5); sin_size=sizeof(struct sockaddr_in); /*等待客戶端鏈接請求到達*/ if((client_sockfd=accept(server_sockfd,(struct sockaddr *)&remote_addr,&sin_size))<0) { perror("accept"); return 1; } printf("accept client %s\n",inet_ntoa(remote_addr.sin_addr)); len=send(client_sockfd,"Welcome to my server\n 客戶端IP127.0.0.3\n 服務器實現者學號20155206\n 當前時間2018.5.26\n",21,0);//發送歡迎信息 /*接收客戶端的數據並將其發送給客戶端--recv返回接收到的字節數,send返回發送的字節數*/ while((len=recv(client_sockfd,buf,BUFSIZ,0))>0) { buf[len]='\0'; printf("%s\n",buf); if(send(client_sockfd,buf,len,0)<0) { perror("write"); return 1; } } close(client_sockfd); close(server_sockfd); return 0; }
本次實驗在小組三人的共同努力下完成,可是試驗箱出現問題,兩個實驗模塊不能同時使用,在同時打開使用時下載進去的代碼總有幾段是沒法運行的;同時,今天小組內檢查實驗完成狀況時,在用超級終端與試驗箱鏈接時總會不停的自動斷開,而後再次自動鏈接,經反覆實驗,發現是數據線的問題,有點接觸不良形成的。