Thursday, April 28, 2016

"Kirchoff’s Electric Society" -team /J.ES321/ (J.ES13D481-D.Chinbat, J.ES12D017-B.Dashnyam J.ES12D034-N.Haliagzam J.ES12D026-G.Nyamgavaa)


I can explain it to you, But i cant understand it for you.






Virtual машинд файл шэйрлэх

  • Виртуал машиныхаа shared folders – ийг Always enabled болгож Add дарна.


  • Next дарж Host Path дээр шэйрлэх фолдэрийнхээ замыг зааж өгнө. Дараа ньNext дарна.



  •  Enable this share –ийг сонгоод Finish дарна. Ингээд фолдэр шэйрлэгдлээ.


  •  mnt/hgfs/share дотор ls  командыг бичсэнээр шэйр фолдэр доторх файлууд харагдаж байна.


Хэрэглэгчийн давуу эрхийг тохируулах буюу root болгох
  •  Sudo –s команд бичсэнээр root болно.


  •  Sudo gedit /etc/gdm/custom.conf командыг бичихэд гарч ирэх цонхон дээр дараах кодыг бичсэнээр хэрэглэгчийн давуу эрх үүснэ.



Cross compiler суулгах

  •       Шэйр фолдэр дотор байгаа 4.3.2.tar.gz cross compiler –ийг usr/local/arm/ -руу хуулна.



  •       Usr/local/arm/ дотор tar zxvf 4.3.2.tar.gz командыг бичсэнээр файлыг задлана.



  •       Gedit .bashrc командаар гарч ирсэн цонхонд доорх зургийн дагуу замыг зааж өгөх команд бичнэ.




  •       Arm-linux-gcc –v командаар тухайн Ubuntu –д cross compiler –ийн ямар хувилбар суусан болохыг харж болно.


Uboot ачааллах

  •       Шэйр фолдэр дотор байгаа uboot_smdkv210.tar.gz –ийг Android/ -руу хуулна.



  •       Android/ дотор tar zxvf uboot_smdkv210.tar.gz командыг бичсэнээр файлыг задлана.



  •       Android/uboot_smdkv210/ дотор make хийнэ.



  •       Make хийхэд үүсэх u-boot.bin файлыг шэйр фолдэрт хуулна.


kernel ачаалах

  •       Шэйр фолдэр дотор байгаа kernel_smdkv210.tar.gz –ийг Android/ -руу хуулна.


  •       Android/ дотор tar zxvf kernel_smdkv210.tar.gz командыг бичсэнээр файлыг задлана.

  •       Android/kernel_smdkv210/ дотор make zImage командыг бичсэнээрzImage үүснэ.


  •       zImage –ийг шэйр фолдэрт хуулна.



Файл систем ачааллах
  •       Шэйр фолдэр дотор байгаа myfs.tar.gz –ийг Android/ -руу хуулна.



  •       Android/ дотор tar zxvf myfs.tar.gz командыг бичсэнээр файлыг задлана.




  •       Шэйр фолдэр дотор байгаа mkyaffs2image –ийг Android/ -руу хуулна.



  •       Mkyaffs2image файлын тусламжтай ./mkyaffs2image myfs/sys.imgкомандаар system.img буюу sys.img –ийг үүсгэнэ. Үүссэн sys.imgфайлыг шэйр фолдэрт хуулна.

SIN210 хавтангийн тухай


  • SIN210 хавтан нь Android, WinCE, Linux үйлдлийн систем дэмжин ажиллах боломжтой.

  • Sin210 хавтаны техникийн үзүүлэлтийг хавсралт хэсэгт багтаасан ба бүрдэл хэсгүүд

  • Линукс системд хөрвүүлсэн үндсэн код шаардлагатай байдаг.
Үүнд: uboot.bin, zImage, system.img


Линукс системийг бүрдүүлдэг эдгээр гурван файлийн эхнийх нь uboot.bin, дараа нь төрөл бүрийн драйверуудыг хөрвүүлж линукс кернелийг тохируулах zImage файл, файлын системийг удирдах system.img юм.
  • Ubuntu үйлдлийн систем дээр linux-г сompile хийх
  • Windows болон ubuntu үйлдлийн системийн хооронд файл чөлөөтэй солилцохын тулд ubuntu-г root хэрэглэгчээр тохируулах алхамыг хийх хэрэгтэй.
Терминал нээх (Applications menu -> Accessories -> Terminal)
sudo –s
sudo passwd
root хэрэглэгчийн нэр, нууц үг үүсгэх.
sudo gedit /etc/gdm/custom.conf
custom.conf файл нээж доорх тохиргоог бичнэ.
[daemon]
TimedLoginEnable=true
AutomaticLoginEnable=true
TimedLogin=root
AutomaticLogin=root
TimedLoginDelay=30
Restart хийснээр root эрхээр нэвтрэнэ.
Дарагийн алхам нь cross compiler суулгах:
Arm хавтас үүсгэх:
cd /usr/local/
mkdir arm
Үүсгэсэн /usr/local/arm хавтасд \..\arm-linux-gcc\4.3.2.tar.gz файл хуулах.
Cross compiler задлах:
tar 4.3.2.tar.gz
Cross compiler замчлах:
cd ~
gedit .bashrc
.bashrc цонх дээр PATH=/usr/local/arm/4.3.2/bin:$PATH
export PATH нэмж бичнэ.
Хувьсагч дахин ачаалах:
source .bashrc
Cross compiler шалгах:
arm-linux-gcc –v


  • Суулгасан сross compiler ашиглан uboot source-г сompile хийх:
Sin210 хавтас үүсгэж uboot_smdkv210.tar.gz файлыг хуулаад
mkdir Sin210
uboot_smdkv210.tar.gz файлыг задлах:
tar zxvf uboot_smdkv210.tar.gz
Сross compiler-р u-boot.bin файл үүсгэх:
cd uboot_smdkv210
make smdkv210single_config
make


u-boot.bin файл үүссэн байдал
  • Суулгасан сross compiler ашиглан kernel source-г сompile хийх:
Sin210 хавтасд kernel_smdkv210.tar.gz файлыг хуулаад
tar zxvf kernel_smdkv210.tar.gz
cd uboot_smdkv210
make zImage



zImage файл үүссэн байдал

  • Системийн .img файлыг mkyaffs2image ашиглан үүсгэх:
Sin210 хавтасд linux2.6.34\source\myfs.tar.gz файл хуулна
Tar zxvfmyfs.tar.gz
Sin210 хавтасд linux2.6.34\tools\mkyaffs2image tool-г хуулаад system.img үүсгэх
./mkyaffs2image myfs system.img


  • Дээрх үйлдлүүдийн үр дүнд uboot.bin, zImage, system.img файлууд үүснэ.


  • Файлын нэр Байрлах хаяг Хэмжээ
uboot                    0x000000-0x100000              1MB
zImage                 0x100000-0x600000              5MB
fs                          0x600000-END                     250MB
NandFlash-д файл хадгалах зайн хуваарилалт

  • Sin210 хавтан дээр uboot.bin, zImage, system.img файлуудыг шарах:
  • Эхлэдэг горимыг sd card ашиглан гүйцэтгэхдээ uboot file.г хуулсан байх шаарадлагатай. Serial cable болон USB OTG cable-г холбоно.
Үүний дараа файл дамжуулах DNW0.6 програм-ыг нээнэ.
  • Үүний дараа Sin210 хавтанг асааж 3 секундын дотор товч дарж сериал терминалыг эхлүүлнэ.
nand erase командаар санах ойг цэвэрлэнэ.
dnw c0008000 командаар uboot.bin файлыг USB OTG-р дамжуулна.


USB OTG cable-р дамжуулах файлыг сонгох
nand write c0008000 0 100000 командаар NandFlash санах ойд uboot.bin файлыг бичих.
dnw c0008000 командаар zImage файлыг USB OTG-р дамжуулна.
  • USB OTG cable-р дамжуулах system.img файлыг сонгох
  • nand write.yaffs c0008000 600000 c1bae00 командаар NandFlash санах ойдsystem.img файлыг бичих.
  • Үүний дараа NandFlash-аас эхлэх горимд тохируулж дахин эхлүүлнэ. Ингэснээр эмбэддэд линукс ажиллахад бэлэн болно.


LED удирдах

Driver бичих
  •  kernel_smdkv210/drivers/char дотор gedit led.c командыг бичихэд led.cгэсэн file үүснэ.
  • led.c дотроо Writing LED Driversийн  кодыг хийгээд хадгална.
  • Дараа нь kernel_smdkv210/drivers/char дотроо gedit Makefile гэж бичээд гарч ирсэн кодон дээр led.o-ыг нэмээд хадгална.
  • Дараа нь kernel_smdkv210 folder дотроо make zImage командыг бичнэ
  • Ингэснээр LED-н Driver-тай zImage үүснэ.
  • gedit led_test.c буюу led_test.c текст file үүсгээд LED Writing Application-ын кодыг хийгээд хадгална.
  • Дараа нь gedit Makefile буюу Makefile-ыг үүсгээд LED Writing Application кодыг хийж хадгална.
  • Дээр үүссэн 2 file-ын байгаа газар make  командыг бичиснээр дараах Application file үүснэ.

  • Үүссэн led_test Application file-аа mkyaffs2image/myfs/usr/sbin folder дотор copy paste  хийнэ.
  • Дараа нь mkyaffs2image folder дотроос ./mkyaffs2image myfs/ system.img командыг бичсэнээр system.img буюу File System  үүснэ.
  • Үүссэн system.img file-aa DNW программаар board-руугаа шараад Reset хийнэ.
  • Үйлдэлийн систем бүрэн ачаалласны дараа DNW дээрээ Enter дархад root эрхээр нэвтэрнэ. Root-р нэвтэрсэний дараа led_test 1,2,3,4 on/off командаар led-үүдээ удирдана.




                                                    Key application бичих

  • key .с  текст файл үүсгээд доорх кодыг copy paste хийгээд хадгална.
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <linux/input.h>
#define NOKEY 0
int main()
{
int keys_fd;
char ret[2];
struct input_event t;
keys_fd = open("/dev/input/event0", O_RDONLY);
if(keys_fd<=0)
{
printf("open /dev/event0 device error!\n");
return 0;
}
while(1)
{
if(read(keys_fd,&t,sizeof(t))==sizeof(t)) {
if(t.type==EV_KEY)
if(t.value==0 || t.value==1)
{
switch(t.code)
{
case 102:
printf("HOME %s\n",(t.value)?"Pressed":"Released");
break;
case 139:
printf("MENU %s\n",(t.value)?"Pressed":"Released");
break;
case 158:
printf("ESC %s\n",(t.value)?"Pressed":"Released");
break;
case 231:
printf("CALL %s\n",(t.value)?"Pressed":"Released");
break;
case 107:
printf("END %s\n",(t.value)?"Pressed":"Released");
break;
case 30:
printf("A %s\n",(t.value)?"Pressed":"Released");
break;
case 48:
printf("B %s\n",(t.value)?"Pressed":"Released");
break;
case 46:
printf("C %s\n",(t.value)?"Pressed":"Released");
break;
default:
break;
}
}
}
}
close(keys_fd);
return 0;
}








Дараа нь gedit makefile буюу makefile-ыг үүсгээд доорх кодыг copy paste хийгээд хадгална.

CROSS = arm-none-linux-gnueabi-
CC = $(CROSS)gcc
AR = $(CROSS)ar
STRIP = $(CROSS)strip
LDFLAGS +=
EXEC = button_test
OBJS = key.o
all: $(EXEC)
$(EXEC): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $(OBJS) $(LIBM) $(LDLIBS) $(LIBGCC) -lm
clean:
-rm -f $(EXEC) *.elf *.gdb *.o
  • Дээр үүссэн 2 file-ын байгаа газар make командыг бичиснээр Application file үүснэ.


QT application

  • Дараах формтой QT application бичье. SW1 - SW8 хоорондох товчыг дарснаар тухайн дарагдсан товчинд харгалзах LED асах бөгөөд хэддүгээр LED ямар төлөвтэй байгаа нь тус тусын TextLabel - уудад харагдана.


  • key.c дээр S1-S8 товч дарагдсан эсэхийг шалгаж товч дарагдсан үед хэвлэгдэх мэдээллийн кодыг бичнэ.



  • led.c код нь 0 бол led асаах, 1 бол led унтраах ба товчнуудын утгыг уншиж led -ийг асаана эсвэл унтраана.

  • main.cpp -д QT application -ы эх функц агуулагдана.


  • QT application болон board -ны key, led -үүдийг холбох код: 


  • Case дотор label -үүдэд текстэн утга онооно.


  • void MainWindow :: on_btn(1-ээс 8_clicked()  командаар 1 -ээс 8 дугаар button дарагдсан үед.
ui->KeyDis_(1-ээс 8)->setText("on") командаар 1 -ээс 8 label -үүдэд хэддүгээр лед асаж байгаа мэдээллийг өгөх бөгөөд led_ioctl(LED(1-ээс 8), (LED_OFF эсвэл LED_ON)) командаар led -ийг асаана эсвэл унтраана.


  • Доор энэхүү QT application -д хэрэглэгдэх толгой файлуудын кодыг харуулсан байна.




  • Энэ application -ны design -ы дэвсгэр болох зургыг дараах байдлаар оруулж өгнө.  
                                             Aчааллах үед дүрслэх лого
  • 800x480 хэмжээтэй PNG зураг бэлдэнэ.

    • sudo apt-get install netpbm командыг бичнэ.
  • Rm kernel_smdkv210/drivers/video/logo/logo_linux_clut224*. *командаар logo_linux_clut224*.* файлуудыг устгана.
  • linuxlogo.png файлыг Android/ дотор хуулна.


  • pngtopnm linuxlogo.png > linuxlogo.pnm
  • pnmquant 224 linuxlogo.pnm > linuxlogo224.pnm
  • pnmtoplainpnm linuxlogo224.pnm > logo_linux_clut224.ppm командыг бичсэнээр logo_linux_clut224.ppm файл үүснэ.
  • logo_linux_clut224.ppm файлыгAndroid/kernel_smdkv210/drivers/video/logo/ дотор хуулна.
  • Android/kernel_smdkv210/ дотор make zImage командыг бичнэ. Ингэснээр zImage үүснэ.
  • Үүссэн zImage –ийг шэйр фолдэрт хуулна.

    Линукс кернелийг дахин compile хийсний дараа logo_linux_clut224.c үүснэ. Дахин үүссэн zImage файлыг NandFlash-д хуулж дахин эхлүүлэхэд шинэ лого дүрслэгдэнэ.