<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://ift.wiki.uib.no/index.php?action=history&amp;feed=atom&amp;title=EDK_tutorial_2</id>
	<title>EDK tutorial 2 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://ift.wiki.uib.no/index.php?action=history&amp;feed=atom&amp;title=EDK_tutorial_2"/>
	<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=EDK_tutorial_2&amp;action=history"/>
	<updated>2026-05-25T08:29:19Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>http://ift.wiki.uib.no/index.php?title=EDK_tutorial_2&amp;diff=213&amp;oldid=prev</id>
		<title>Nfyku: New page: == Installering av en generell IP og tilhørende softwaredriver for MicroBlaze i Xilix Projekt Studio 7.1i ==  En enkel steg-for-steg veiledning til implementasjon av en softwaredriver for...</title>
		<link rel="alternate" type="text/html" href="http://ift.wiki.uib.no/index.php?title=EDK_tutorial_2&amp;diff=213&amp;oldid=prev"/>
		<updated>2009-03-02T08:12:18Z</updated>

		<summary type="html">&lt;p&gt;New page: == Installering av en generell IP og tilhørende softwaredriver for MicroBlaze i Xilix Projekt Studio 7.1i ==  En enkel steg-for-steg veiledning til implementasjon av en softwaredriver for...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Installering av en generell IP og tilhørende softwaredriver for MicroBlaze i Xilix Projekt Studio 7.1i ==&lt;br /&gt;
&lt;br /&gt;
En enkel steg-for-steg veiledning til implementasjon av en softwaredriver for LCD på MEMEC protokort DS-BD-V4LX25MB&lt;br /&gt;
&lt;br /&gt;
Dette er en kort veiledning lage software-drivere til eksterne komponenter i et microblaze system. Dette oppsettet basere seg på et prototypekort &lt;br /&gt;
fra MEMEC. Vi vil ta utgangspunkt i det lille 2x16 tegns LCD-skjermen som følger med på kortet. Har du kjørt tutorial 1 vil du legge merke til at LCD displayet &lt;br /&gt;
ikke ble inkludert i prosjektet. Dette må dermed legges til manuelt i ettertid. Siden det er snakk om en enkel IO enhet kan&lt;br /&gt;
vi bruke en generell buss-IP uten å tenke på ekstra VHDL-kode som må implementeres. Du vil trenge XPS innstalert på maskinen samt tilgang &lt;br /&gt;
til hyperterminal eller annen terminal som kan lese com-portene på PC&amp;#039;en din.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DEL 1 - Legge til IP==&lt;br /&gt;
&lt;br /&gt;
=== Lage IP ===&lt;br /&gt;
&lt;br /&gt;
Åpne prosjektet fra tutorial 1 i XPS. Åpne menyen &amp;quot;project&amp;quot; og velg &amp;quot;Add/Edit Cores... (dialog)&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
[[Image:EDK_XPS_20.jpg]]&lt;br /&gt;
&lt;br /&gt;
Du vil nå få opp en oversikt over alle enheter som er tilkoblet prosessoren. &lt;br /&gt;
I listen over tilgjenglige IP&amp;#039;er, velg &amp;quot;opb_gpio&amp;quot; og trykk &amp;quot;add&amp;quot;. Du vil nå legge til en ny ip. Gi Ip&amp;#039;en navnet &amp;quot;LCD_module&amp;quot; og klikk &amp;quot;apply&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:EDK_XPS_21.jpg]]&lt;br /&gt;
&lt;br /&gt;
I samme vindu velger du så menyen &amp;quot;Bus Connections&amp;quot;. Bla deg ned på listen her til du finner &amp;quot;LCD_module sopb&amp;quot;. &lt;br /&gt;
Marker enhenten som slave for mb_opb bussen. Klikk så på &amp;quot;apply&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:EDK_XPS_22.jpg]]&lt;br /&gt;
&lt;br /&gt;
Gå videre til &amp;quot;Adresses&amp;quot;. Her trykker du på knappen &amp;quot;Generate Addresses&amp;quot;. XPS vil da automatisk generere en adresse til IP&amp;#039;en vår. &lt;br /&gt;
Du vil få opp et vindu som spør om du vil fortsette. klikk &amp;quot;Yes&amp;quot;. Ip&amp;#039;em din vil nå ligge i adresseområdet 0x40040000-0x4004ffff, &lt;br /&gt;
har du fått en annen verdi så husk denne verdien da du må bruke denn og ikke 0x40040000 videre i tutorialen. Trykk så &amp;quot;apply&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:EDK_XPS_23.jpg]]&lt;br /&gt;
&lt;br /&gt;
Gå nå til menyen &amp;quot;Ports&amp;quot;. Her skal vi koble interne signaler fra IP&amp;#039;en til et signal som senere kan rutes til pinner på FPGA&amp;#039;en. &lt;br /&gt;
Begynn med å velge &amp;quot;LCD_module&amp;quot; i &amp;quot;Ports Filter&amp;quot;. Bøa deg så ned i &amp;quot;List of Ports&amp;quot; til du finner signalene til vår IP. Hold nede &amp;quot;ctrl&amp;quot; &lt;br /&gt;
tasten og velg &amp;quot;OPB_CLK&amp;quot; samt &amp;quot;GPIO_d_out&amp;quot;. Trykk så &amp;quot;Add&amp;quot; for å legge dem til &amp;quot;Internal Ports Connection&amp;quot;. For signalet OPB_CLK forandrer &lt;br /&gt;
du &amp;quot;Net name&amp;quot; til &amp;quot;sys_clk_s&amp;quot;. For signalet &amp;quot;GPIO_d_out&amp;quot; forandrer du &amp;quot;Net name&amp;quot; til fpga_lcd_module&amp;quot;. I listen over &amp;quot;External Ports Connection&amp;quot; &lt;br /&gt;
trykker du &amp;quot;Add Port&amp;quot;. Du får nå opp et lite vindu som du må fylle ut data i. I linjen for &amp;quot;Port Name&amp;quot; skriver du &amp;quot;fpga_lcd_module&amp;quot;. Sett &amp;quot;Port &lt;br /&gt;
Polaritet&amp;quot; til &amp;quot;OUT&amp;quot; og gi &amp;quot;connected to&amp;quot; navnet &amp;quot;fpga_lcd_module&amp;quot;. Trykk &amp;quot;Ok&amp;quot;. Du må nå legge til &amp;quot;Range&amp;quot; for den eksterne porten vi definerte. &lt;br /&gt;
Skriv inn &amp;quot;[0:9]&amp;quot;. Trykk &amp;quot;Apply&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:EDK_XPS_24.jpg]]&lt;br /&gt;
&lt;br /&gt;
Velg så menyen &amp;quot;Parameters&amp;quot;. I rullegardinlisten over IP&amp;#039;er velger du LCD_module. &lt;br /&gt;
Marker parametrene; &amp;quot;C_GPIO_WIDTH&amp;quot;, &amp;quot;C_IS_DUAL&amp;quot;, &amp;quot;C_ALL_INPUTS&amp;quot; og &amp;quot;C_IS_BIDIR&amp;quot;. &lt;br /&gt;
Trykk &amp;quot;Add&amp;quot;. Sett så verdien til 10 for &amp;quot;C_GPIO_WIDTH&amp;quot; og til 0 for de tre andre. Trykk &amp;quot;Apply&amp;quot; og &amp;quot;Ok&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:EDK_XPS_25.jpg]]&lt;br /&gt;
&lt;br /&gt;
Du har nå lagt til en IP som er koblet til OPB bussen og har 10 signallinjer(utganger) som kan kobles til fpga&amp;#039;ens pinner. &lt;br /&gt;
Siden det her er snakk om en Ip som allerede eksisterer slipper vi å lage egene softwaredrivere til IP&amp;#039;en.&lt;br /&gt;
&lt;br /&gt;
=== Koble til eksterne pinner ===&lt;br /&gt;
&lt;br /&gt;
Neste steg er nå å rute våre 10 signal til rette pinner på fpga&amp;#039;en. Det gjøres i &amp;quot;user constraint&amp;quot; filen. Denne finner en under &amp;quot;Project files&amp;quot; og den heter &amp;quot;system.ucf&amp;quot;. Åpne denne filen.&lt;br /&gt;
&lt;br /&gt;
[[Image:EDK_XPS_26.jpg]]&lt;br /&gt;
&lt;br /&gt;
Her legger vil til signalene våre og hvilke pinner de skal bruke samt hvilke type signal det er snakk om:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
############################################################################&lt;br /&gt;
## This system.ucf file is generated by Base System Builder based on the&lt;br /&gt;
## settings in the selected Xilinx Board Definition file. Please add other&lt;br /&gt;
## user constraints to this file based on customer design specifications.&lt;br /&gt;
############################################################################&lt;br /&gt;
&lt;br /&gt;
Net sys_clk_pin LOC=B13 | IOSTANDARD = LVCMOS25;&lt;br /&gt;
Net sys_rst_pin LOC=AB9;&lt;br /&gt;
Net sys_rst_pin PULLUP | IOSTANDARD = LVCMOS25;&lt;br /&gt;
## System level constraints&lt;br /&gt;
Net sys_clk_pin PERIOD = 10000 ps;&lt;br /&gt;
Net sys_rst_pin TIG;&lt;br /&gt;
&lt;br /&gt;
## FPGA pin constraints&lt;br /&gt;
&lt;br /&gt;
## Legg til våre signaler her&lt;br /&gt;
## lcd_enable (9)&lt;br /&gt;
Net fpga_lcd_module&amp;lt;0&amp;gt; LOC = AD10 | IOSTANDARD = LVCMOS25;&lt;br /&gt;
## lcd_RS (8)&lt;br /&gt;
Net fpga_lcd_module&amp;lt;1&amp;gt; LOC = AC11 | IOSTANDARD = LVCMOS25;&lt;br /&gt;
## lcd_data( 7-0 )&lt;br /&gt;
Net fpga_lcd_module&amp;lt;2&amp;gt; LOC = Y6   | IOSTANDARD = LVCMOS25;&lt;br /&gt;
Net fpga_lcd_module&amp;lt;3&amp;gt; LOC = W7   | IOSTANDARD = LVCMOS25;&lt;br /&gt;
Net fpga_lcd_module&amp;lt;4&amp;gt; LOC = AD6  | IOSTANDARD = LVCMOS25;&lt;br /&gt;
Net fpga_lcd_module&amp;lt;5&amp;gt; LOC = AE6  | IOSTANDARD = LVCMOS25;&lt;br /&gt;
Net fpga_lcd_module&amp;lt;6&amp;gt; LOC = AC7  | IOSTANDARD = LVCMOS25;&lt;br /&gt;
Net fpga_lcd_module&amp;lt;7&amp;gt; LOC = AD8  | IOSTANDARD = LVCMOS25;&lt;br /&gt;
Net fpga_lcd_module&amp;lt;8&amp;gt; LOC = AC8  | IOSTANDARD = LVCMOS25;&lt;br /&gt;
Net fpga_lcd_module&amp;lt;9&amp;gt; LOC = AC9  | IOSTANDARD = LVCMOS25;&lt;br /&gt;
&lt;br /&gt;
Net fpga_0_RS232_RX_pin LOC=B14 | IOSTANDARD = LVCMOS25;&lt;br /&gt;
Net fpga_0_RS232_TX_pin LOC=T7  | IOSTANDARD = LVCMOS33;&lt;br /&gt;
Net fpga_0_RS232_req_to_send_pin LOC=T8  | IOSTANDARD = LVCMOS33;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lagre filen når du er ferdig. Gå på &amp;quot;tools&amp;quot; menyen og velg &amp;quot;Update bitstream&amp;quot;. XPS vil nå lage nye bitfiler med driveren inkludert. &lt;br /&gt;
Dette tar gjene 1 til 2 timer. Bruk denne tiden til å ta deg en kaffe og gratulere deg selv over at du nå er klar til neste steg.&lt;br /&gt;
&lt;br /&gt;
== DEL 2 - Lage program til LCD ==&lt;br /&gt;
&lt;br /&gt;
=== Includefil for lcd-skjerm ===&lt;br /&gt;
&lt;br /&gt;
For å kunne teste ut lcd-skjermen og IP&amp;#039;en vi har laget til den trenger vi et lite bibliotek med funkjsoner som lar oss skrive på skjermen. &lt;br /&gt;
Nedenfor er det listet opp enn c fil som inneholder disse rutinene, samt en header fil. Disse filene, &amp;lt;a href=&amp;quot;uploads/lcd.c&amp;quot;&amp;gt;lcd.c&amp;lt;/a&amp;gt; og &amp;lt;a href=&amp;quot;uploads/lcd.h&amp;quot;&amp;gt;lcd.h&amp;lt;/a&amp;gt;, må legges inn i &lt;br /&gt;
prosjektkatalogen din på følgende sted: &amp;quot;...test/TestApp_Memory/src&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
//--       Masteroppgave 2005        --&lt;br /&gt;
//--                av               --&lt;br /&gt;
//--  Tor Aleksander Birk Danielsen  --&lt;br /&gt;
//--                                 --&lt;br /&gt;
//--  Driverfunkjsoner for 2x16      --&lt;br /&gt;
//--  lcd display                    --&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
// &lt;br /&gt;
// LCD_module_address må defineres&lt;br /&gt;
&lt;br /&gt;
#include &amp;quot;xgpio_l.h&amp;quot;&lt;br /&gt;
#include &amp;quot;xutil.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
#define LCD_module_address 0x40040000&lt;br /&gt;
#define lcd_type 2           // 0=5x7, 1=5x10, 2=2 lines&lt;br /&gt;
#define lcd_line_two 0x40    // LCD RAM address for the second line&lt;br /&gt;
&lt;br /&gt;
//=======================================&lt;br /&gt;
//== liten delayfunkjson brukt i lcd.c ==&lt;br /&gt;
//=======================================&lt;br /&gt;
void delay_ms(int delay_m){&lt;br /&gt;
   volatile int delay=0;&lt;br /&gt;
   volatile int i=0;&lt;br /&gt;
   for (i=0; i&amp;lt;= delay_m; i++){&lt;br /&gt;
     for (delay=0; delay&amp;lt;9000; delay++){&lt;br /&gt;
       //delay&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//================================&lt;br /&gt;
//== sender byte til lcd skjerm ==&lt;br /&gt;
//================================&lt;br /&gt;
void lcd_send_byte(int address, Xuint32 data){&lt;br /&gt;
   if (address != 0) data = data | 0x100;&lt;br /&gt;
   else data = data &amp;amp; 0xFF;&lt;br /&gt;
   XGpio_mSetDataReg(LCD_module_address, 1, data);&lt;br /&gt;
   data = data | 0x200;&lt;br /&gt;
   delay_ms(2);&lt;br /&gt;
   XGpio_mSetDataReg(LCD_module_address, 1, data);&lt;br /&gt;
   delay_ms(5);&lt;br /&gt;
   data = data &amp;amp; 0x1FF;&lt;br /&gt;
   XGpio_mSetDataReg(LCD_module_address, 1, data);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//=================================*&lt;br /&gt;
//== gå til punkt på lcd skjermen ==&lt;br /&gt;
//=================================*&lt;br /&gt;
void lcd_gotoxy(int x,int y) {&lt;br /&gt;
   int address;&lt;br /&gt;
   if(y!=1)&lt;br /&gt;
     address=lcd_line_two;&lt;br /&gt;
   else&lt;br /&gt;
     address=0;&lt;br /&gt;
   address+=x-1;&lt;br /&gt;
   lcd_send_byte(0,0x80|address);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//========================*&lt;br /&gt;
//== skriver tegn på lcd ==&lt;br /&gt;
//========================*&lt;br /&gt;
void lcd_putc( char c) {&lt;br /&gt;
   switch (c) {&lt;br /&gt;
     case &amp;#039;\f&amp;#039;   : lcd_send_byte(0,1);&lt;br /&gt;
                   delay_ms(2);&lt;br /&gt;
                                           break;&lt;br /&gt;
     case &amp;#039;\n&amp;#039;   : lcd_gotoxy(1,2);        break;&lt;br /&gt;
     case &amp;#039;\b&amp;#039;   : lcd_send_byte(0,0x10);  break;&lt;br /&gt;
     default     : lcd_send_byte(1,c);     break;&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//================================&lt;br /&gt;
//== initialiserer LCD skjermen ==&lt;br /&gt;
//================================&lt;br /&gt;
void lcd_init(void){&lt;br /&gt;
   int i;&lt;br /&gt;
   Xuint32 init[4];&lt;br /&gt;
   init[0] = 0x00f; //init display&lt;br /&gt;
   init[1] = 0x001; //clear display&lt;br /&gt;
   init[2] = 0x038; //enable 8 bit data&lt;br /&gt;
   XGpio_mSetDataDirection(LCD_module_address, 1, 0x00000000);&lt;br /&gt;
   delay_ms(100);&lt;br /&gt;
   for(i=0; i&amp;lt;=2; i++){&lt;br /&gt;
     XGpio_mSetDataReg(LCD_module_address, 1, init[i]);&lt;br /&gt;
     init[i] = init[i] | 0x200; //enable høy&lt;br /&gt;
     delay_ms(2);&lt;br /&gt;
     XGpio_mSetDataReg(LCD_module_address, 1, init[i]);&lt;br /&gt;
     delay_ms(100);&lt;br /&gt;
     init[i] = init[i] &amp;amp; 0x1FF;    //enable lav&lt;br /&gt;
     XGpio_mSetDataReg(LCD_module_address, 1, init[i]);&lt;br /&gt;
     delay_ms(100);&lt;br /&gt;
   }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
//=======================================*&lt;br /&gt;
//== Skriver strenger til LCD displayet ==&lt;br /&gt;
//=======================================*&lt;br /&gt;
void lcd_string(char *s){&lt;br /&gt;
  while (*s)&lt;br /&gt;
  {&lt;br /&gt;
    lcd_putc(*s);&lt;br /&gt;
    s++;&lt;br /&gt;
  }&lt;br /&gt;
  return;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//===============================================&lt;br /&gt;
//== Skriver ut en testmelding på lcd skjermen ==&lt;br /&gt;
//===============================================&lt;br /&gt;
void lcd_test_msg(void){&lt;br /&gt;
   lcd_putc(&amp;#039;\f&amp;#039;);&lt;br /&gt;
   lcd_gotoxy(1,1);&lt;br /&gt;
   lcd_string(&amp;quot;* Test av LCD  *&amp;quot;);&lt;br /&gt;
   lcd_gotoxy(1,2);&lt;br /&gt;
   lcd_string(&amp;quot;*abcdefghijklmn*&amp;quot;);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//=====================================&lt;br /&gt;
//==       Masteroppgave 2005        ==&lt;br /&gt;
//==                av               ==&lt;br /&gt;
//==  Tor Aleksander Birk Danielsen  ==&lt;br /&gt;
//=====================================&lt;br /&gt;
//--                                 --&lt;br /&gt;
//--       Filnavn: lcd.h            --&lt;br /&gt;
//--       Dato: 06/06-2005          --&lt;br /&gt;
//--                                 --&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
#include &amp;quot;xgpio_l.h&amp;quot;&lt;br /&gt;
#include &amp;quot;xutil.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
//    delay_ms(millisekund);&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
// enkel funksjon som generer delay i ms området&lt;br /&gt;
void delay_ms(int delay_m);&lt;br /&gt;
&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
//    lcd_string();&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
// Skriver ut en streng på lcd-skjermen&lt;br /&gt;
void lcd_string(char *s);&lt;br /&gt;
&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
//    lcd_init();&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
// initialiserer et 2x16 lcd display&lt;br /&gt;
void lcd_init(void);&lt;br /&gt;
&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
//    lcd_send_byte(address,data);&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
// Sender en byte til lcd displayet&lt;br /&gt;
// Første variabel er &amp;#039;0&amp;#039; hvis det&lt;br /&gt;
// registerinfo som sendes, ellers&lt;br /&gt;
// er den &amp;#039;1&amp;#039; for tegn&lt;br /&gt;
void lcd_send_byte(int address, Xuint32 data);&lt;br /&gt;
&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
//    lcd_send_nibble(data,address);&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
//??? ikke i bruk&lt;br /&gt;
void lcd_send_nibble(int data, int address);&lt;br /&gt;
&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
//    lcd_gotoxy(x,y);&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
// Gå til et punkt på lcd skjermen&lt;br /&gt;
void lcd_gotoxy(int x,int y);&lt;br /&gt;
&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
//    lcd_putc(c);&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
// skriver ut en bokstav på lcd skjerm&lt;br /&gt;
// spesialtegn:&lt;br /&gt;
// &amp;#039;\f&amp;#039; &lt;br /&gt;
// &amp;#039;\n&amp;#039;&lt;br /&gt;
// &amp;#039;\b&amp;#039;&lt;br /&gt;
void lcd_putc( char c);&lt;br /&gt;
&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
//    lcd_test_msg();&lt;br /&gt;
//-------------------------------------&lt;br /&gt;
// skriver ut en testmelding&lt;br /&gt;
void lcd_test_msg(void);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Main fil ===&lt;br /&gt;
&lt;br /&gt;
Du vil også trenge en main rutine som kjører hovedprogrammet ditt. Denne filen &amp;lt;a href=&amp;quot;uploads/main.c&amp;quot;&amp;gt;main.c&amp;lt;/a&amp;gt; må du også legge inn i samme &lt;br /&gt;
prosjektkatalog, &amp;quot;...test/TestApp_Memory/src&amp;quot;, som de to forrige filene.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
//-----------------------------------&lt;br /&gt;
//--          toturial 2           --&lt;br /&gt;
//--      test av lcd-skjerm       --&lt;br /&gt;
//--                               --&lt;br /&gt;
//-- Tor Aleksander Birk Danielsen --&lt;br /&gt;
//-----------------------------------&lt;br /&gt;
&lt;br /&gt;
//-- include headers --&lt;br /&gt;
#include &amp;quot;xparameters.h&amp;quot;&lt;br /&gt;
#include &amp;quot;xgpio_l.h&amp;quot;&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
#include &amp;quot;lcd.h&amp;quot;&lt;br /&gt;
&lt;br /&gt;
int main(void) {&lt;br /&gt;
&lt;br /&gt;
	print(&amp;quot;--main_rutine--\n\r&amp;quot;);&lt;br /&gt;
	print(&amp;quot;lcd init....&amp;quot;);&lt;br /&gt;
	lcd_init(); //inintialiserer lcd skjerm&lt;br /&gt;
	print(&amp;quot;ok\n\r&amp;quot;);&lt;br /&gt;
	print(&amp;quot;skriver test msg på lcd\n\r&amp;quot;);&lt;br /&gt;
	lcd_test_msg();&lt;br /&gt;
	delay_ms(2000);					// 2sek delay&lt;br /&gt;
	print(&amp;quot;skiver streng på lcd\n\r&amp;quot;);&lt;br /&gt;
	lcd_putc(&amp;#039;\f&amp;#039;); 				//ny skjerm&lt;br /&gt;
	lcd_gotoxy(1,1);				//setter markør i øvre venstre hjørne&lt;br /&gt;
	lcd_string(&amp;quot;dette virker jo!&amp;quot;); //skriver ut en streng&lt;br /&gt;
	while(1); //stopper programmet her med evig sløyfe&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Du må nå åpne &amp;quot;applications&amp;quot; menyen og åpne prosjektet &amp;quot;TestApp_Memory&amp;quot;. Høyreklikk på filen &amp;quot;TestApp_Memory.c&amp;quot; og &lt;br /&gt;
slett den. Høyreklikk på &amp;quot;source&amp;quot; og velg &amp;quot;add file..&amp;quot;. Legg til &amp;quot;lcd.c&amp;quot; og &amp;quot;main.c&amp;quot;. Velg &amp;quot;header&amp;quot; og legg til på samme måte &amp;quot;lcd.h&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
[[Image:EDK_XPS_27.jpg]]&lt;br /&gt;
&lt;br /&gt;
Pass på at &amp;quot;#define LCD_module_address 0x40040000&amp;quot; i lcd.c peker til rett adresse. Denne adressen ble automatisk generert tidligere i oppgaven&lt;br /&gt;
og skal ideelt sett være lik.&lt;br /&gt;
&lt;br /&gt;
Gå på &amp;quot;tools&amp;quot; menyen og velg &amp;quot;Build All User Aplications&amp;quot;. Du vil nå få kompilert c-koden din. Start så opp hyperterminal med samme innstilinger som forrige gang. Gå på &amp;quot;tools&amp;quot; menyen og velg &amp;quot;downloads&amp;quot;. Du vil nå få lastet over prosessor og programkode på fpga&amp;#039;en.  På lcd skjermen vil du få opp følgende to meldinger med 2 sek mellomrom:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
* Test av LCD  *&lt;br /&gt;
*abcdefghijklmn*&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
dette virker jo!&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
og på hyperterminal vil følgende melding komme opp:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
--main_rutine--&lt;br /&gt;
lcd init....ok&lt;br /&gt;
skriver test msg på lcd&lt;br /&gt;
skiver streng på lcd&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Mikroelektronikk]]&lt;/div&gt;</summary>
		<author><name>Nfyku</name></author>
	</entry>
</feed>