Embeddedsystem(6)_2.PDF

Size: px
Start display at page:

Download "Embeddedsystem(6)_2.PDF"

Transcription

1

2 SA1110 Peripheral Control Module UART Blocking I/O S5N8946 UART Device Driver SA1110 UART Device Driver UART Device Driver Program Test (Host / SA1110)

3 ARM System Bus DMA Controller ARM Peripheral Bus LCD Controller Serial Port 0 UDC Serial Port 1 GPCLK/UART Serial Port 2 ICP Serial Port 3 UART Serial Port 4 MCP / SSP L_PCLK L_BIAS UDC+ UDC- TXD1 RXD1 TXD2 RXD2 TXD3 RXD3 TXD4 SCLK

4 SA1110 Peripheral Control Module Peripheral Serial Protocol Register Width / DMA port Size Base Address Interrupt Number LCD Controller 32 0h B Serial port 0 : USB 8 0h UART 8 0h Serial port 1 : 15 GPCLK 8 0h UART 8 0h Serial port 2 : ICP 16 HSSP 8 0h Serial port 3 : UART 8 0h MPC 16 0h Serial port 4 : SSP 16 0h Peripheral pin controller (PPC) 32 0h

5 UART 0x UTCR0 / UART Control Register 0 0 0x UTCR1 / UART Control Register 1 1 0x UTCR2 / UART Control Register 2 2 0x C UTCR3 / UART Control Register 3 3 0x UTDR / UART Data Register 0x C UTSR0 / UART State Register 0 0 0x UTSR1 UART State Register 1 1

6 UTCR (UART Control Register 0) UART RESERVED TCE RCE SCE DSS SBS OES PE 0??????? PE (Parity Enable) (0: X / 1: ) OES (Odd / Even parity Select) (0: / 1: ) SBS : Stop Bit Select (0:1 / 1:2 ) DSS : Data Size Select (0:7 / 1:8 ) SCE : Sample Clock Enable (0: / 1: (GPIO20)) RCE : Receive Clock Edge Select (0: / 1: ) TCE : Transmit Clock Edge Select (0: / 1: )

7 UART UTCR 1, 2 UTCR RESERVED BRD 11 BRD 10 BRD 9 BRD 8 UTCR ???? BRD 7 BRD 6 BRD 5 BRD 4 BRD 3 BRD 2 BRD 1 BRD 0 0??????? *. BaudRate = ( X 10^6) / (16 X (BRD + 1)) BRD = ( X 10^6) / (16 X (BaudRate ) - 1 * 9600baud BRD = ( X 10^6) / (16 X (9600 ) 1 = 23

8 UTCR (UART Control Register 3) UART RESERVED LBM TIE RIE BRK TXE RXE 0 0?????? RXE : Receiver Enable ( 0: / 1: ) TXE : Transmitter Enable ( 0: / 1: ) BRK : Break ( 0: / 1: LOW ) RIE : Receive FIFO Interrupt Enable ( 0: X / 1: ) TIE : Transmit FIFO Interrupt Enable ( 0: X / 1: ) LBM : Loopback Mode ( 0: / 1: )

9 UTDR (UART Data Register) UART ROR FRE PRE DATA??????????? * ROR, FRE, PRE 1 ROR (Receive Over Run Error) : High FRE (Framing Error) : High PRE (Parity Error) : High

10 UTSR0(UART State Register) UART RESERVED EIF REB RBB RID RFS TFS 0 0?????? TFS (Transmit FIFO Service Request Flag) : FIFO Write High RFS (Receiver FIFO Service Request Flag) : FIFO High RID (Receiver Idle Status) : FIFO High RBB (Receiver Begin of Break Status) : Break High REB (Receiver End of Break Status) : Break High EIF (Error in FIFO Flag) : 4 High

11 UTSR1(UART State Register) UART RESERVED ROR FRE PRE TNF RNE TBY 0 0?????? TBY (Transmitter Busy Flag) : High RNE (Receive FIFO Not Empty Flag) : FIFO High TNF (Transmit FIFO Not Full Flag) : FIFO High PRE (Parity Error) : High FRE (Framing Error) : High ROR (Receive Over Run Error) : High

12 Blocking I/O Blocking, Nonblocking - Blocking - read,, - write,, -Nonblocking -Read / write read / write EAGIN -Nonblock -open( /dev/serial, O_RDWR O_NONBOCK);

13 Blocking I/O sleep_on / wake_up #include <linux/sched.h> void interruptible_sleep_on(struct wait_queue **q) void sleep_on(struct wait_queue **q) void wake_up_interruptible(struct wait_queue **q) void wake_up(struct wait_queue **q) Waiting queue - sleep struct wait_queue* - sleep_on wake_up

14 struct wait_queue *wq = NULL; Blocking I/O read_write_t sleepy_read(struct inode *inode, struct file *filp, char *buf, count_t count) if ( filp -> f_flags & O_NONBLOCK) printk(kern_debug procesor %i is nonblocking mode n, current -> pid_; return EAGAIN; else printk(kern_debug process %i (%s) going to sleep n,urrent_pid, courrent -> comm); interruptible_sleep_on(&wq); return 0; read_write_t sleepy_write(struct inode *inode, struct file *filp, const char *buf, count_t cout) printk(kern_debug process %i (%s) (&commn); wake_up_interrupt (&wq); return count;

15 UART Device Driver sleep_on() inq rp wp wake_up() process read() write() Input ring buffer Output ring buffer rx_isr xmit tx_isr UART wp rp sleep_on() wake_up() outq

16 S5N8946 Device driver #define UART_BASE(BASE_ADDR+0xd000) struct uart_regs u_32 ulcon; /* line control register */ u_32 ucon; /* control register */ u_32 ustat; /* status register */ u_32 utxbuf; /* transmit buffer register */ u_32 urxvuf; /* receive buffer register */ u_32 ubrdiv; /* baud rate divisor register */ u_32 brdcnt; /* baud rate count register */ u_32 brdclk; /* baud rate clock monitor */ ;

17 S5N8946 Device driver /* UART line control register */ #define UART_WL(x) ((x) & 0x3) /* 00:5bit, 01:6bit, 10:7bit, 11:8bit */ #define UART_STB (1<<2) /* stop bit, 0:one, 1:two */ #define UART_PMD(x) ((x)<<3 & 0x38) /* parity,0xx:no, 100:odd, 101:even */ #define UART_SC (1<<6) /* serial clock, 0:internal 1:external */ #define UART_IR (1<<7) /* infra-red mode */ /* UART control register */ #define UART_RxM(x) ((x) & 0x3) /*receive mode, 00:disable, 01: interrupt, 10:GDMA ch0, 11:GDMA ch1*/ #define UART_RXSI (1<<2) /* receive status interrupt enable */ #define UART_TxM(x) ((x)<<3 & 0x18) /* transmit mode, same as UART_RxM(x) */ #define UART_DSR (1<<5) /* data set ready */ #define UART_SBK (1<<6) /* send break */ #define UART_LPM (1<<7) /* look-back mode */

18 S5N8946 Device driver /* UART status register */ #define UART_OV (1) /* overrun error */ #define UART_PE (1<<1) /* parity error */ #define UART_FE (1<<2) /* frame error */ #define UART_BKD (1<<3) /* break interrupt */ #define UART_DTR (1<<4) /* data terminal ready */ #define UART_RDR (1<<5) /* receive data ready */ #define UART_TBE (1<<6) /* Tx buffer register empty */ #define UART_TC (1<<7) /* transmit complete */

19 S5N8946 Device driver SERIAL_MAJOR = 150; struct file_operations sserial_fops = read: sserial_read, write:sserial_write, open: sserial_open, release : sserial_release; int sserial_init(void) int result; result=register_chrdev(serial_major, "serial",&sserial_fops); if(result<0) printk( sserial:can't get major %d n", SERIAL_MAJOR ); return result; return 0;

20 S5N8946 Data structure Data structure for device #define MAX_SIZE 48 typedef struct sserial_dev_t struct wait_queue *inq, *outq; char inbuf[max_size]; char outbuf[max_size]; int inrp, inwp; int outrp, outwp; int buf_empty; sserial_dev_t; sserial_dev_t sserial_dev;

21 S5N8946 Open function sserial_open Device data structure Device Register interrupt service routines int sserial_open(struct inode *inode, struct file *filp) sserial_dev_t *dev; dev = &sserial_dev; memset(dev, 0, sizeof(serial_dev_t)); dev->buf_empty = 1; filp->private_data = dev; s5n8946_sserial_init(); request_irq(5, sserial_rx_isr, 0, sserial_dev_rx", NULL); request_irq(4, sserial_tx_isr, 0, sserial_dev_tx", NULL); return 0;

22 S5N8946 Release function sserial_release Flush data in write buffer Unregister interrupt void sserial_release ( struct inode *inode, struct file *filp) sserial_dev_t *dev; dev = filp->private_data; while(dev->outwp!= dev->outrp) interruptible_sleep_on(&(dev->outq)); free_irq(5, NULL); free_irq(4, NULL);

23 S5N8946 Read function int sserial_read(struct inode *inode, struct file *filp, char *buf, int count) sserial_dev_t *dev; char *b2; int i; dev = filp->private_data; b2 = kmalloc(count, GFP_ATOMIC); for(i=0; i<count;) if(dev->inwp!=dev->inrp) b2[i] = dev->inbuf[dev->inrp]; dev->inrp = (dev->inrp+1)%max_size; i++; else interruptible_sleep_on(&(dev->inq)); memcpy_tofs(buf, b2, count); kfree(b2); return count;

24 S5N8946 Write function(1) int sserial_write(struct inode *inode, struct file *filp, const char *buf, int count) volatile struct uart_regs *uart = (volatile struct uart_regs*)uart_base; sserial_dev_t *dev; char *b2; int i; register unsigned long flags; if(count == 0) return 0; dev = filp->private_data; b2 = kmalloc(count, GFP_ATOMIC); memcpy_fromfs(b2, buf, count);

25 S5N8946 Write function(2) for(i=0; i<count;) if(((dev->outwp+1)%max_size) == dev->outrp) sserial_tx_go(dev); interruptible_sleep_on(&(dev->outq)); else dev->outbuf[dev->outwp]=b2[i]; dev->outwp=(dev->outwp+1) %MAX_SIZE; i++; kfree(b2); sserial_tx_go(dev); return count;

26 S5N8946 sserial_tx_go function void sserial_tx_go(sserial_dev_t *dev) volatile struct uart_regs *uart = (volatile struct uart_regs *)UART_BASE; register unsigned long flags; if(dev->buf_empty) save_flags(flags); cli(); dev->buf_empty = 0; if(uart->ustat & UART_TBE) uart->utxbuf = dev->outbuf[dev->outrp]; dev->outrp = (dev->outrp + 1) % MAX_SIZE; restore_flags(flags);

27 S5N8946 sserial_rx_isr function void sserial_rx_isr(int irq, void *data, structpt_regs *reg) volatile struct uart_regs *uart = (volatile struct uart_regs )UART_BASE; sserial_dev_t *dev; dev = &sserial_dev; if(uart->ustat & UART_RDR) if( ((dev->inwp+1)%max_size) == dev->inrp) else dev->inbuf[dev->inwp] = uart->urxbuf; dev->inwp = (dev->inwp +1) % MAX_SIZE; wake_up_interruptible(&(dev->inq));

28 S5N8946 sserial_tx_isr function void sserial_tx_isr(int irq, void *data, struct pt_regs *reg) volatile struct uart_regs *uart = (volatile struct uart_regs *)UART_BASE; sserial_dev_t *dev; register unsigned long flags; dev = &sserial_dev; if(dev->outwp == dev->outrp) save_flags(flags); cli(); dev->buf_empty = 1; restore_flags(flags); else if(uart->ustat & UART_TBE) uart->utxbuf = dev->outbuf[dev->outrp]; dev->outrp = (dev->outrp + 1) % MAX_SIZE; wake_up_interruptible(&(dev->outq));

29 Source file Kernel % cp sserial.c ~/linux/drivers/char/ Kernel vi ~/linux/drivers/char/mem.c int char_dev_init(void) #ifdef CONFIG_SSERIAL sserial_init(); #endif vi ~/linux/drivers/char/makefile ifeq ($(CONFIG_SSERIAL),y) L_OBJS += sserial.o endif vi ~/linux/drivers/char/config.inv bool Sserial device support CONFIG_SSERIAL

30 Module Module init_module(void) sserial_init(); cleanup_module(void) sserial_release ();

31 SA1110 Source (include/asm/arch/sa-1100.h) #define _UTCR0(Nb) REG(0x ((Nb) -1)*0x ) /* UART Control Reg. 0 [1..3] */ #define _UTCR1(Nb) REG(0x ((Nb) - 1)*0x ) /* UART Control Reg. 1 [1..3] */ #define _UTCR2(Nb) REG(0x ((Nb) - 1)*0x ) /* UART Control Reg. 2 [1..3] */ #define _UTCR3(Nb) REG(0x C + ((Nb) - 1)*0x ) /* UART Control Reg. 3 [1..3] */ #define _UTCR4(Nb) REG(0x ((Nb) - 1)*0x ) /* UART Control Reg. 4 [2] */ #define _UTDR(Nb) REG(0x ((Nb) - 1)*0x ) /* UART Data Reg. [1..3] */ #define _UTSR0(Nb) REG(0x C + ((Nb) - 1)*0x ) /* UART Status Reg. 0 [1..3] */ #define _UTSR1(Nb) REG(0x ((Nb) - 1)*0x ) /* UART Status Reg. 1 [1..3] */ #define Ser1UTCR0 _UTCR0 (1) /* Ser. port 1 UART Control Reg. 0 */ #define Ser1UTCR1 _UTCR1 (1) /* Ser. port 1 UART Control Reg. 1 */ #define Ser1UTCR2 _UTCR2 (1) /* Ser. port 1 UART Control Reg. 2 */ #define Ser1UTCR3 _UTCR3 (1) /* Ser. port 1 UART Control Reg. 3 */ #define Ser1UTDR _UTDR (1) /* Ser. port 1 UART Data Reg. */ #define Ser1UTSR0 _UTSR0 (1) /* Ser. port 1 UART Status Reg. 0 */ #define Ser1UTSR1 _UTSR1 (1) /* Ser. port 1 UART Status Reg. 1 */ #define Ser2UTCR0 _UTCR0 (2) /* Ser. port 2 UART Control Reg. 0 */ #define Ser2UTCR1 _UTCR1 (2) /* Ser. port 2 UART Control Reg. 1 */ #define Ser2UTCR2 _UTCR2 (2) /* Ser. port 2 UART Control Reg. 2 */ #define Ser2UTCR3 _UTCR3 (2) /* Ser. port 2 UART Control Reg. 3 */ #define Ser2UTCR4 _UTCR4 (2) /* Ser. port 2 UART Control Reg. 4 */ #define Ser2UTDR _UTDR (2) /* Ser. port 2 UART Data Reg. */ #define Ser2UTSR0 _UTSR0 (2) /* Ser. port 2 UART Status Reg. 0 */ #define Ser2UTSR1 _UTSR1 (2) /* Ser. port 2 UART Status Reg. 1 */......

32 SA1110 Data Structure struct uart_port u_int iobase; /* in/out[bwl] */ void *membase; /* read/write[bwl] */ u_int irq; u_int uartclk; u_char fifosize; /* tx fifo size */ u_char x_char; u_char regshift ; /* reg offset shift */ u_char iotype; /* io access style */ u_char hub6; u_char unused[7]; u_int read_status_mask; u_int ignore_status_mask; u_int flags; u_int type; /* port type */ struct uart_ops *ops; struct uart_icount icount; u_int line; u_long mapbase; /* for ioremap */ ; struct uart_info spinlock_t lock; struct uart_port *port; struct uart_ops *ops; struct uart_state *state; struct tty_struct *tty; struct circ_buf xmit ; u_int flags; u_int event; u_int timeout; u_int mctrl; u_int driver_priv; int blocked_open; pid_t session; pid_t pgrp; struct tasklet_struct tlet; wait_queue_head_t open_wait; wait_queue_head_t close_wait; wait_queue_head_t delta_msr_wait ; struct uart_info *next_info; ;

33 SA1110 Data Structure struct uart_ops u_int (*tx_empty)(struct uart_port *); void (*set_mctrl)(struct uart_port *, u_int mctrl); u_int (*get_mctrl)(struct uart_port *); void (*stop_tx)(struct uart_port *, u_int from_tty); void (*start_tx)(struct uart_port *, u_int nonempty, u_int from_tty); void (*stop_rx)(struct uart_port *); void (*enable_ms)(struct uart_port *); void (*break_ctl)(struct uart_port *, int ctl); int (*startup)(struct uart_port *, struct uart_info *); void (*shutdown)(struct uart_port *, struct uart_info *); void (*change_speed)(struct uart_port *, u_int cflag, u_int iflag, u_int quot); ; void (*pm)(struct uart_port *, u_int state, u_int oldstate); int (*set_wake)(struct uart_port *, u_int state); const char *(*type)(struct uart_port *); void (*release_port)(struct uart_port *); int (*request_port)(struct uart_port *); void (*config_port)(struct uart_port *, int); int (*verify_port)(struct uart_port *, struct serial_struct *); int (*ioctl)(struct uart_port *, u_int, u_long); struct uart_driver struct module *owner; int normal_major; const char *normal_name; struct tty_driver *normal_driver; int callout_major; const char *callout_name; struct tty_driver *callout_driver; struct tty_struct **table; struct termios **termios; struct termios **termios_locked; int minor; int nr; struct uart_state *state; /* driver should pass NULL */ struct uart_port *port; /* array of port information */ struct console *cons; ; struct termios tcflag_t c_iflag; /* input mode flags */ tcflag_t c_oflag; /* output mode flags */ tcflag_t c_cflag; /* control mode flags */ tcflag_t c_lflag; /* local mode flags */ cc_t c_line; /* line discipline */ cc_t c_cc[nccs]; /* control characters */ speed_t c_ispeed; /* input speed */ speed_t c_ospeed; /* output speed */ ;

34 serial_sa1100.c Driver Initialization static struct uart_driver sa1100_reg = ; owner: normal_major: normal_name: callout_name:"cusa", normal_driver: callout_major: callout_driver: table: termios: termios_locked: minor: nr: port: THIS_MODULE, sa1100_table, sa1100_termios, MINOR_START, NR_PORTS, sa1100_ports, SERIAL_SA1100_MAJOR, "test", &normal, CALLOUT_SA1100_MAJOR, &callout, sa1100_termios_locked, static int init sa1100_serial_init(void) sa1100_init_ports(); return uart_register_driver(&sa1100_reg); static struct uart_ops sa1100_pops = tx_empty: sa1100_tx_empty, set_mctrl: sa1100_set_mctrl, get_mctrl: sa1100_get_mctrl, stop_tx: sa1100_stop_tx, start_tx: sa1100_start_tx, stop_rx: sa1100_stop_rx, enable_ms: sa1100_enable_ms, break_ctl: sa1100_break_ctl, startup: sa1100_startup, shutdown: sa1100_shutdown, change_speed: sa1100_change_speed, type: sa1100_type, release_port: sa1100_release_port, request_port: sa1100_request_port, config_port: sa1100_config_port, verify_port: sa1100_verify_port, ;

35 serial_sa1100.c Driver Initialization static void sa1100_init_ports(void) static int first = 1; int i; if (!first) return; first = 0; for (i = 0; i < NR_PORTS; i++) sa1100_ports[i].uartclk = ; sa1100_ports[i].ops sa1100_ports[i].fifosize = 8; = &sa1100_pops; sa1100_register_uart(0,1); // Ser1SDCR0 = SDCR0_UART; //1 UART Ser2UTCR4 = 0; //2 Ser2HSCR0 = 0; void init sa1100_register_uart(int idx, int port) if (idx >= NR_PORTS) printk(kern_err FUNCTION ": bad index number %d n", idx); return; sa1100_ports[idx].membase = (void *)&Ser1UTCR0; //UART 1 sa1100_ports[idx].mapbase = _Ser1UTCR0; sa1100_ports[idx].irq = IRQ_Ser1UART; sa1100_ports[idx].iotype = SERIAL_IO_MEM; sa1100_ports[idx].flags = ASYNC_BOOT_AUTOCONF; void init sa1100_register_uart_fns(struct sa1100_port_fns *fns) if (fns->enable_ms) sa1100_pops.enable_ms = fns->enable_ms; if (fns->get_mctrl) sa1100_pops.get_mctrl = fns->get_mctrl; if (fns->set_mctrl) sa1100_pops.set_mctrl = fns->set_mctrl; sa1100_open = fns->open; sa1100_close = fns->close; sa1100_pops.pm = fns->pm; sa1100_pops.set_wake = fns->set_wake;

36 serial_sa1100.c Port Verification function static int sa1100_verify_port(struct uart_port *port, struct serial_struct *ser) int ret = 0; if (ser->type!= PORT_UNKNOWN && ser->type!= PORT_SA1100) ret = -EINVAL; if (port->irq!= ser->irq) ret = -EINVAL; if (ser->io_type!= SERIAL_IO_MEM) ret = -EINVAL; if (port->uartclk / 16!= ser->baud_base) ret = -EINVAL; if ((void *)port->mapbase!= ser->iomem_base) ret = -EINVAL; if (port->iobase!= ser->port) ret = -EINVAL; if (ser->hub6!= 0) ret = -EINVAL; return ret;

37 serial_sa1100.c startup function static int sa1100_startup(struct uart_port*port, struct uart_info *info) int retval; retval = request_irq(port->irq, sa1100_int, 0, "serial_test", info); // irq=15, name:serial_test if (retval) return retval; if (sa1100_open) retval = sa1100_open(port, info); if (retval) free_irq(port->irq, info); return retval; /* * Finally, clear and enable interrupts */ UART_PUT_UTSR0(port, -1); UART_PUT_UTCR3(port, UTCR3_RXE UTCR3_TXE UTCR3_RIE); return 0;

38 serial_sa1100.c Interrupt Service Routine static void sa1100_int(int irq, void *dev_id, struct pt_regs *regs) struct uart_info *info = dev_id; struct uart_port*port = info->port; unsigned int status, pass_counter = 0; status = UART_GET_UTSR0(port); status &= (SM_TO_UTSR0(port->read_status_mask) ~UTSR0_TFS); do if (status & (UTSR0_RFS UTSR0_RID)) /* Clear the receiver idle bit, if set */ if (status & UTSR0_RID) UART_PUT_UTSR0(port, UTSR0_RID); sa1100_rx_chars(info, regs); /* Clear the relevent break bits */ if (status & (UTSR0_RBB UTSR0_REB)) UART_PUT_UTSR0(port, status & (UTSR0_RBB UTSR0_REB)); if (status & UTSR0_RBB) port->icount.brk++; if (status & UTSR0_TFS) sa1100_tx_chars(info); if (pass_counter++ > SA1100_ISR_PASS_LIMIT) break; status = UART_GET_UTSR0(port); status &= (SM_TO_UTSR0(port->read_status_mask) ~UTSR0_TFS); while (status & (UTSR0_TFS UTSR0_RFS UTSR0_RID));

39 serial_sa1100.c sa1100_start_tx, sa1100_stop_tx function static void sa1100_start_tx(struct uart_port *port, u_int nonempty, u_int from_tty) if (nonempty) unsigned long flags; u32 utcr3; local_irq_save(flags); utcr3 = UART_GET_UTCR3(port); port->read_status_mask = UTSR0_TO_SM(UTSR0_TFS); UART_PUT_UTCR3(port, utcr3 UTCR3_TIE); local_irq_restore(flags); static void sa1100_stop_tx(struct uart_port*port, u_int from_tty) u32 utcr3 = UART_GET_UTCR3(port); UART_PUT_UTCR3(port, utcr3 & ~UTCR3_TIE); port->read_status_mask &= ~UTSR0_TO_SM(UTSR0_TFS);

40 serial_sa1100.c sa1100_tx_chars function static void sa1100_tx_chars(struct uart_info *info) struct uart_port*port = info->port; if (port->x_char) UART_PUT_CHAR(port, port->x_char); port->icount.tx++; port->x_char = 0; return; if (info->xmit.head == info->xmit.tail info->tty->stopped info->tty->hw_stopped) sa1100_stop_tx(info->port, 0); return; /* * Tried using FIFO (not checking TNF) for fifo fill: * still had the '4 bytes repeated' problem. */ while (UART_GET_UTSR1(port) & UTSR1_TNF) UART_PUT_CHAR(port, info->xmit.buf[info->xmit.tail]); info->xmit.tail = (info->xmit.tail + 1) & (UART_XMIT_SIZE - 1); port->icount.tx++; if (info->xmit.head == info->xmit.tail) break; if (CIRC_CNT(info->xmit.head, info->xmit.tail, UART_XMIT_SIZE) < WAKEUP_CHARS) uart_event(info, EVT_WRITE_WAKEUP); if (info->xmit.head == info->xmit.tail) sa1100_stop_tx(info->port, 0);

41 serial_sa1100.c sa1100_rx_chars function(1) sa1100_rx_chars(struct uart_info *info, struct pt_regs *regs) struct tty_struct *tty = info->tty; unsigned int status, ch, flg, ignored = 0; struct uart_port*port = info->port; status = UTSR1_TO_SM(UART_GET_UTSR1(port)) UTSR0_TO_SM(UART_GET_UTSR0(port)); while (status & UTSR1_TO_SM(UTSR1_RNE)) ch = UART_GET_CHAR(port); if (tty->flip.count >= TTY_FLIPBUF_SIZE) goto ignore_char; port->icount.rx++; flg = TTY_NORMAL; if (status & UTSR1_TO_SM(UTSR1_PRE UTSR1_FRE UTSR1_ROR)) goto handle_error; if (uart_handle_sysrq_char(info, ch, regs)) goto ignore_char; error_return: *tty->flip.flag_buf_ptr++ = flg; *tty->flip.char_buf_ptr++ = ch; tty->flip.count++; ignore_char: status = UTSR1_TO_SM(UART_GET_UTSR1(port)) UTSR0_TO_SM(UART_GET_UTSR0(port)); out: tty_flip_buffer_push(tty); return; handle_error: if (status & UTSR1_TO_SM(UTSR1_PRE)) port->icount.parity++; else if (status & UTSR1_TO_SM(UTSR1_FRE)) port->icount.frame++; if (status & UTSR1_TO_SM(UTSR1_ROR)) port->icount.overrun++; if (status & port->ignore_status_mask) if (++ignored > 100) goto out; goto ignore_char;

42 serial_sa1110.c sa1100_rx_chars function(2) status &= port->read_status_mask; if (status & UTSR1_TO_SM(UTSR1_PRE)) flg = TTY_PARITY; else if (status & UTSR1_TO_SM(UTSR1_FRE)) flg = TTY_FRAME; if (status & UTSR1_TO_SM(UTSR1_ROR)) /* * overrun does *not* affect the character * we read from the FIFO */ *tty->flip.flag_buf_ptr++ = flg; *tty->flip.char_buf_ptr++ = ch; tty->flip.count++; if (tty->flip.count >= TTY_FLIPBUF_SIZE) goto ignore_char; ch = 0; flg = TTY_OVERRUN; goto error_return;

43 serial_sa1100.c sa1100_stop_rx, sa1100_serial_exit function static void sa1100_stop_rx(struct uart_port *port) u32 utcr3 = UART_GET_UTCR3(port); UART_PUT_UTCR3(port, utcr3 & ~UTCR3_RIE); static void exit sa1100_serial_exit(void) uart_unregister_driver(&sa1100_reg);

44 Serial_test_host.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <fcntl.h> #include <termios.h> #include <sys/ioctl.h> int main( int argc, char **argv ) int sd; struct termios oldtio,newtio; char Buff[255]; int DataCount ; int ending; sd = open( "/dev/ttys0", O_RDWR O_NOCTTY ); if(sd < 0 ) printf( "Serial Open Fail [/dev/ttys00] r n " ); exit(0); tcgetattr(sd, &oldtio ); memset( &newtio, 0, sizeof(newtio) ); cfsetispeed(&newtio,b115200); cfsetospeed(&newtio,b115200); newtio.c_cflag &= ~PARENB; newtio.c_cflag &= ~CSTOPB; newtio.c_cflag &= ~CSIZE ; newtio.c_cflag = CS8 CLOCAL CREAD ; newtio.c_iflag = IGNPAR; newtio.c_oflag &= ~OPOST; newtio.c_lflag = 0; newtio.c_cc[vtime] = 30; newtio.c_cc[vmin] = 0; tcflush(sd, TCIFLUSH ); tcsetattr(sd, TCSANOW, &newtio ); ending = 0; while(!ending) scanf("%s",buff); write(sd, Buff, strlen( Buff ) ); tcsetattr(sd, TCSANOW, &oldtio ); close(sd); return 0;

45 Serial_test_SA1110.c #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <string.h> #include <fcntl.h> #include <termios.h> #include <sys/ioctl.h> #define BAUDRATE B //termios.h int main( int argc, char **argv ) int sd; struct termios oldtio,newtio; char Buff[255]; int DataCount ; int ending; sd = open( "/dev/test0", O_RDWR O_NOCTTY ); if(sd < 0 ) // printf( "Serial Open Fail [/dev/test0] r n " ); exit(0); tcgetattr( sd, &oldtio ); memset( &newtio, 0, sizeof(newtio) ); //newtio cfsetispeed(&newtio, BAUDRATE); // cfsetospeed(&newtio, BAUDRATE); // newtio.c_cflag &= ~PARENB; // enable newtio.c_cflag &= ~CSIZE ; //mask character sizebit newtio.c_cflag &= ~CSTOPB; //stop bit enable newtio.c_cflag = CS8 CLOCAL CREAD ; //8N1,, newtio.c_iflag = IGNPAR; //parity error newtio.c_oflag &= ~OPOST; // newtio.c_lflag = 0; //canonical newtio.c_cc[vtime] = 30; //time_out : TIME*0.1 newtio.c_cc[vmin] = 0; // tcflush( sd, TCIFLUSH ); // tcsetattr( sd, TCSANOW, &newtio ); // ending = 0; while(!ending) DataCount = read( sd, Buff, 255 ); if(datacount < 0 ) printf( "Read Error n" ); break; if(datacount!= 0 ) Buff[DataCount] = 0; printf( "Read Data [%s] n", Buff ); if( Buff[0] == 'x' ) ending = 1; tcsetattr( sd, TCSANOW, &oldtio ); close( sd ); return 0; //datacount //x // //

46 Serial_test_host.c gcc Serial_test_SA1110.c arm-linux-gcc Serial_test_SA1110 Serial_test_SA1110 Serial_test_host Host PC

untitled

untitled Step Motor Device Driver Embedded System Lab. II Step Motor Step Motor Step Motor source Embedded System Lab. II 2 open loop, : : Pulse, 1 Pulse,, -, 1 +5%, step Step Motor (2),, Embedded System Lab. II

More information

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 -

(Asynchronous Mode) ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - (Asynchronous Mode) - - - ( 1, 5~8, 1~2) & (Parity) 1 ; * S erial Port (BIOS INT 14H) - 1 - UART (Univ ers al As y nchronous Receiver / T rans mitter) 8250A 8250A { COM1(3F8H). - Line Control Register

More information

Microsoft Word doc

Microsoft Word doc 1. Serial 프로그램예제 1.1. 개요 타겟보드자체에메인콘솔용으로사용되는통신포트이외에두개의다른포트를지원하고있다. 일반적으로메인콘솔용으로사용되는포트는통신용으로부적합하다. 왜냐하면커널에서발생되는메세지가메인콘솔로출력되기때문에통신에방해를받을수있기때문이다. 이런이유로타겟보드에는통신시험이나응용통신에이용할수있도록 MCU 의통신포트에 MAX2421 레벨변환기를추가하였다.

More information

Chapter #01 Subject

Chapter #01  Subject Device Driver March 24, 2004 Kim, ki-hyeon 목차 1. 인터럽트처리복습 1. 인터럽트복습 입력검출방법 인터럽트방식, 폴링 (polling) 방식 인터럽트서비스등록함수 ( 커널에등록 ) int request_irq(unsigned int irq, void(*handler)(int,void*,struct pt_regs*), unsigned

More information

6주차.key

6주차.key 6, Process concept A program in execution Program code PCB (process control block) Program counter, registers, etc. Stack Heap Data section => global variable Process in memory Process state New Running

More information

K&R2 Reference Manual 번역본

K&R2 Reference Manual 번역본 typewriter structunion struct union if-else if if else if if else if if if if else else ; auto register static extern typedef void char short int long float double signed unsigned const volatile { } struct

More information

KEY 디바이스 드라이버

KEY 디바이스 드라이버 KEY 디바이스드라이버 임베디드시스템소프트웨어 I (http://et.smu.ac.kr et.smu.ac.kr) 차례 GPIO 및 Control Registers KEY 하드웨어구성 KEY Driver 프로그램 key-driver.c 시험응용프로그램 key-app.c KEY 디바이스드라이버 11-2 GPIO(General-Purpose Purpose I/O)

More information

1

1 - - - Data Sheet Copyright2002, SystemBase Co, Ltd - 1 - A0 A1 A2 CS0#, CS1# CS2#, CS3# CTS0#, CTS1# CTS2, CTS3# D7~D3, D2~D0 DCD0#, DCD1# DCD2#, DCD3# DSR0#, DSR1# DSR2#, DSR3# DTR0#, DTR1# DTR2#, DTR3#

More information

CANTUS Evaluation Board Ap. Note

CANTUS Evaluation Board Ap. Note Preliminary CANTUS - UART - 32bits EISC Microprocessor CANTUS Ver 1. October 8, 29 Advanced Digital Chips Inc. Ver 1. PRELIMINARY CANTUS Application Note( EVM B d ) History 29-1-8 Created Preliminary Specification

More information

Embeddedsystem(8).PDF

Embeddedsystem(8).PDF insmod init_module() register_blkdev() blk_init_queue() blk_dev[] request() default queue blkdevs[] block_device_ops rmmod cleanup_module() unregister_blkdev() blk_cleanup_queue() static struct { const

More information

슬라이드 1

슬라이드 1 / 유닉스시스템개요 / 파일 / 프로세스 01 File Descriptor file file descriptor file type unix 에서의파일은단지바이트들의나열임 operating system 은파일에어떤포맷도부과하지않음 파일의내용은바이트단위로주소를줄수있음 file descriptor 는 0 이나양수임 file 은 open 이나 creat 로 file

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 KeyPad Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착 4x4 Keypad 2 KeyPad 를제어하기위하여 FPGA 내부에 KeyPad controller 가구현 KeyPad controller 16bit 로구성된

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Text-LCD Device Control - Device driver Jo, Heeseung M3 모듈에장착되어있는 Tedxt LCD 장치를제어하는 App 을개발 TextLCD 는영문자와숫자일본어, 특수문자를표현하는데사용되는디바이스 HBE-SM5-S4210 의 TextLCD 는 16 문자 *2 라인을 Display 할수있으며, 이 TextLCD 를제어하기위하여

More information

교육지원 IT시스템 선진화

교육지원 IT시스템 선진화 Module 16: ioctl 을활용한 LED 제어디바이스드라이버 ESP30076 임베디드시스템프로그래밍 (Embedded System Programming) 조윤석 전산전자공학부 주차별목표 ioctl() 을활용법배우기 커널타이머와 ioctl 을활용하여 LED 제어용디바이스드라이브작성하기 2 IOCTL 을이용한드라이버제어 ioctl() 함수활용 어떤경우에는읽는용도로만쓰고,

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-Segment Device Control - Device driver Jo, Heeseung HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 6-Digit 7-Segment LED Controller 16비트로구성된 2개의레지스터에의해제어 SEG_Sel_Reg(Segment

More information

SRC PLUS 제어기 MANUAL

SRC PLUS 제어기 MANUAL ,,,, DE FIN E I N T R E A L L O C E N D SU B E N D S U B M O TIO

More information

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾

À©µµ³×Æ®¿÷ÇÁ·Î±×·¡¹Ö4Àå_ÃÖÁ¾ P a 02 r t Chapter 4 TCP Chapter 5 Chapter 6 UDP Chapter 7 Chapter 8 GUI C h a p t e r 04 TCP 1 3 1 2 3 TCP TCP TCP [ 4 2] listen connect send accept recv send recv [ 4 1] PC Internet Explorer HTTP HTTP

More information

chap7.key

chap7.key 1 7 C 2 7.1 C (System Calls) Unix UNIX man Section 2 C. C (Library Functions) C 1975 Dennis Ritchie ANSI C Standard Library 3 (system call). 4 C?... 5 C (text file), C. (binary file). 6 C 1. : fopen( )

More information

The Linux Serial Programming HOWTO 리눅스시리얼프로그래밍하우투 Peter H. Baumann, Peter.Baumann@dir.de v1.0, 22 January 1998 전성민, schun@crypto.pe.kr 2000 년 2 월 24 일 이문서는리눅스시스템에서시리얼통신을어떻게프로그래밍하는가를설명하는하우투문서이다. 1. 소개 1.1

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

untitled

untitled CAN BUS RS232 Line Ethernet CAN H/W FIFO RS232 FIFO IP ARP CAN S/W FIFO TERMINAL Emulator COMMAND Interpreter ICMP TCP UDP PROTOCOL Converter TELNET DHCP C2E SW1 CAN RS232 RJ45 Power

More information

T100MD+

T100MD+ User s Manual 100% ) ( x b a a + 1 RX+ TX+ DTR GND TX+ RX+ DTR GND RX+ TX+ DTR GND DSR RX+ TX+ DTR GND DSR [ DCE TYPE ] [ DCE TYPE ] RS232 Format Baud 1 T100MD+

More information

untitled

untitled CAN BUS RS232 Line CAN H/W FIFO RS232 FIFO CAN S/W FIFO TERMINAL Emulator COMMAND Interpreter PROTOCOL Converter CAN2RS232 Converter Block Diagram > +- syntax

More information

61 62 63 64 234 235 p r i n t f ( % 5 d :, i+1); g e t s ( s t u d e n t _ n a m e [ i ] ) ; if (student_name[i][0] == \ 0 ) i = MAX; p r i n t f (\ n :\ n ); 6 1 for (i = 0; student_name[i][0]!= \ 0&&

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 7-SEGMENT DEVICE CONTROL - DEVICE DRIVER Jo, Heeseung 디바이스드라이버구현 : 7-SEGMENT HBE-SM5-S4210 의 M3 Module 에는 6 자리를가지는 7-Segment 모듈이아래그림처럼실장 6 Digit 7-Segment 2 디바이스드라이버구현 : 7-SEGMENT 6-Digit 7-Segment LED

More information

Microsoft PowerPoint - lab14.pptx

Microsoft PowerPoint - lab14.pptx Mobile & Embedded System Lab. Dept. of Computer Engineering Kyung Hee Univ. Keypad Device Control in Embedded Linux HBE-SM5-S4210 에는 16 개의 Tack Switch 를사용하여 4 행 4 열의 Keypad 가장착되어있다. 2 Keypad Device Driver

More information

Microsoft Word - MPC850 SPI Driver.doc

Microsoft Word - MPC850 SPI Driver.doc MPC850 SPI Driver 네트워크보드에서구현한 SPI Device Driver 제작및이용방법입니다. 문서작성 : 이재훈 (kingseft.lee@samsung.com) 이용한 SPI EEPROM - X5043/X5045 512 x 8 bit SPI EEPROM (4Kbits = 512bytes) - 제조사 : XICOR (www.xicor.com) -

More information

MicrocontrollerAcademy_Lab_ST_040709

MicrocontrollerAcademy_Lab_ST_040709 Micro-Controller Academy Program Lab Materials STMicroelectronics ST72F324J6B5 Seung Jun Sang Sa Ltd. Seung Jun Sang Sa Ltd. Seung Jun Sang Sa Ltd. Seung Jun Sang Sa Ltd. Seung Jun Sang Sa Ltd. Seung Jun

More information

10.

10. 10. 10.1 10.2 Library Routine: void perror (char* str) perror( ) str Error 0 10.3 10.3 int fd; /* */ fd = open (filename, ) /*, */ if (fd = = -1) { /* */ } fcnt1 (fd, ); /* */ read (fd, ); /* */ write

More information

hd1300_k_v1r2_Final_.PDF

hd1300_k_v1r2_Final_.PDF Starter's Kit for HelloDevice 1300 Version 11 1 2 1 2 3 31 32 33 34 35 36 4 41 42 43 5 51 52 6 61 62 Appendix A (cross-over) IP 3 Starter's Kit for HelloDevice 1300 1 HelloDevice 1300 Starter's Kit HelloDevice

More information

[8051] 강의자료.PDF

[8051] 강의자료.PDF CY AC F0 RS1 RS0 OV - P 0xFF 0x80 0x7F 0x30 0x2F 0x20 0x1F 0x18 0x17 0x10 0x0F 0x08 0x07 0x00 0x0000 0x0FFF 0x1000 0xFFFF 0x0000 0xFFFF RAM SFR SMOD - - - GF1 GF0 PD IDL 31 19 18 9 12 13 14 15 1 2 3 4

More information

untitled

untitled - -, (insert) (delete) - - (insert) (delete) (top ) - - (insert) (rear) (delete) (front) A A B top A B C top push(a) push(b) push(c) A B top pop() top A B D push(d) top #define MAX_STACK_SIZE 100 int

More information

untitled

untitled Embedded System Lab. II Embedded System Lab. II 2 RTOS Hard Real-Time vs Soft Real-Time RTOS Real-Time, Real-Time RTOS General purpose system OS H/W RTOS H/W task Hard Real-Time Real-Time System, Hard

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 (Host) set up : Linux Backend RS-232, Ethernet, parallel(jtag) Host terminal Target terminal : monitor (Minicom) JTAG Cross compiler Boot loader Pentium Redhat 9.0 Serial port Serial cross cable Ethernet

More information

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어

프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어 개나리 연구소 C 언어 노트 (tyback.egloos.com) 프로그램을 학교 등지에서 조금이라도 배운 사람들을 위한 프로그래밍 노트 입니다. 저 역시 그 사람들 중 하나 입니다. 중고등학교 시절 학교 도서관, 새로 생긴 시립 도서관 등을 다니며 책을 보 고 정리하며 어느정도 독학으르 공부하긴 했지만, 자주 안하다 보면 금방 잊어먹고 하더라구요. 그래서,

More information

<BDBAB8B6C6AE2D C5EBBDC52E >

<BDBAB8B6C6AE2D C5EBBDC52E > 시리얼제어 Linux Serial Port 2013년도과정 2013.09.11. 차례 통신방식 Linux Serial 통신 Serial Port 설정용구조체 Serial 통신프로그래밍기법 샘플프로그램작성 2 통신방식 Parallel 한번에 8bit 씩데이터를송수신 전송속도가빠르나케이블이굵음 주로프린터와의접속에이용 구현하기힘들고고가 거리에제한적임 Serial

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Network Programming Jo, Heeseung Network 실습 네트워크프로그래밍 멀리떨어져있는호스트들이서로데이터를주고받을수있도록프로그램을구현하는것 파일과는달리데이터를주고받을대상이멀리떨어져있기때문에소프트웨어차원에서호스트들간에연결을해주는장치가필요 이러한기능을해주는장치로소켓이라는인터페이스를많이사용 소켓프로그래밍이란용어와네트워크프로그래밍이랑용어가같은의미로사용

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A636C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The 6 th Lecture 유명환 ( yoo@netplug.co.kr) 1 2 통신 관련이야기 시리얼통신 관련이야기 INDEX 3 ATmega128 시리얼통신회로도분석 4 ATmega128 시리얼통신컨트롤러 (USART) 분석 5 ATmega128 시리얼통신관련레지스터분석 6 ATmega128 시리얼통신실습 1 통신 관련이야기 동기

More information

Chapter_06

Chapter_06 프로그래밍 1 1 Chapter 6. Functions and Program Structure April, 2016 Dept. of software Dankook University http://embedded.dankook.ac.kr/~baeksj 이장의강의목표 2 문자의입력방법을이해한다. 중첩된 if문을이해한다. while 반복문의사용법을익힌다. do 반복문의사용법을익힌다.

More information

歯9장.PDF

歯9장.PDF 9 Hello!! C printf() scanf() getchar() putchar() gets() puts() fopen() fclose() fprintf() fscant() fgetc() fputs() fgets() gputs() fread() fwrite() fseek() ftell() I/O 2 (stream) C (text stream) : `/n'

More information

Microsoft Word doc

Microsoft Word doc 2. 디바이스드라이버 [ DIO ] 2.1. 개요 타겟보드의데이터버스를이용하여 LED 및스위치동작을제어하는방법을설명하겠다. 2.2. 회로도 2.3. 준비조건 ARM 용크로스컴파일러가설치되어있어야한다. 하드웨어적인점검을하여정상적인동작을한다고가정한다. NFS(Network File System) 를사용할경우에는 NFS가마운트되어있어야한다. 여기서는소스전문을포함하지않았다.

More information

슬라이드 1

슬라이드 1 마이크로컨트롤러 2 (MicroController2) 2 강 ATmega128 의 external interrupt 이귀형교수님 학습목표 interrupt 란무엇인가? 기본개념을알아본다. interrupt 중에서가장사용하기쉬운 external interrupt 의사용방법을학습한다. 1. Interrupt 는왜필요할까? 함수동작을추가하여실행시키려면? //***

More information

10주차.key

10주차.key 10, Process synchronization (concurrently) ( ) => critical section ( ) / =>, A, B / Race condition int counter; Process A { counter++; } Process B { counter ;.. } counter++ register1 = counter register1

More information

13주-14주proc.PDF

13주-14주proc.PDF 12 : Pro*C/C++ 1 2 Embeded SQL 3 PRO *C 31 C/C++ PRO *C NOT! NOT AND && AND OR OR EQUAL == = SQL,,, Embeded SQL SQL 32 Pro*C C SQL Pro*C C, C Pro*C, C C 321, C char : char[n] : n int, short, long : float

More information

/chroot/lib/ /chroot/etc/

/chroot/lib/ /chroot/etc/ 구축 환경 VirtualBox - Fedora 15 (kernel : 2.6.40.4-5.fc15.i686.PAE) 작동 원리 chroot유저 ssh 접속 -> 접속유저의 홈디렉토리 밑.ssh의 rc 파일 실행 -> daemonstart실행 -> daemon 작동 -> 접속 유저만의 Jail 디렉토리 생성 -> 접속 유저의.bashrc 의 chroot 명령어

More information

AN_0005B_UART

AN_0005B_UART CANTUS-CAN - UART - 32bits EISC Microprocessor CANTUS Ver 1.1 April 24, 213 Advanced Digital Chips Inc. Ver 1.1 CANTUS Application Note History 213-2-19 Released 213-4-24 Modified CANTUS-CAN CANTUS-CAN

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Web server porting 2 Jo, Heeseung Web 을이용한 LED 제어 Web 을이용한 LED 제어프로그램 web 에서데이터를전송받아타겟보드의 LED 를조작하는프로그램을작성하기위해다음과같은소스파일을생성 2 Web 을이용한 LED 제어 LED 제어프로그램작성 8bitled.html 파일을작성 root@ubuntu:/working/web# vi

More information

Chap06(Interprocess Communication).PDF

Chap06(Interprocess Communication).PDF Interprocess Communication 2002 2 Hyun-Ju Park Introduction (interprocess communication; IPC) IPC data transfer sharing data event notification resource sharing process control Interprocess Communication

More information

03장.스택.key

03장.스택.key ---------------- DATA STRUCTURES USING C ---------------- 03CHAPTER 1 ? (stack): (LIFO:Last-In First-Out) 2 : top : ( index -1 ),,, 3 : ( ) ( ) -> ->. ->.... 4 Stack ADT : (LIFO) : init():. is_empty():

More information

C++-¿Ïº®Çؼ³10Àå

C++-¿Ïº®Çؼ³10Àå C C++. (preprocessor directives), C C++ C/C++... C++, C. C++ C. C C++. C,, C++, C++., C++.,.. #define #elif #else #error #if #itdef #ifndef #include #line #pragma #undef #.,.,. #include #include

More information

Microsoft PowerPoint - e9.pptx

Microsoft PowerPoint - e9.pptx Kernel Programming 이란? 커널모드에서수행하는프로그램을작성하는것 임베디드리눅스커널프로그래밍 커널프로그래밍종류 Linux kernel core 기능추가 Linux kernel 알고리즘개선 Linux kernel 모듈프로그래밍 커널컴파일필요없음 2 Kernel Program vs. Application Program (1) Kernel Program

More information

Sena Technologies, Inc. HelloDevice Super 1.1.0

Sena Technologies, Inc. HelloDevice Super 1.1.0 HelloDevice Super 110 Copyright 1998-2005, All rights reserved HelloDevice 210 ()137-130 Tel: (02) 573-5422 Fax: (02) 573-7710 E-Mail: support@senacom Website: http://wwwsenacom Revision history Revision

More information

OPCTalk for Hitachi Ethernet 1 2. Path. DCOMwindow NT/2000 network server. Winsock update win95. . . 3 Excel CSV. Update Background Thread Client Command Queue Size Client Dynamic Scan Block Block

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 Sensor Device Jo, Heeseung Sensor 실습 HBE-SM5-S4210 에는근접 / 가속도 / 컴파스센서가장착 각센서들을사용하기위한디바이스드라이버와어플리케이션을작성 2 근접 (Proximity) 센서 HBE-SM5-S4210 Camera Module 근접센서디바이스 근접센서는사물이다른사물에접촉되기이전에가까이접근하였는지를검출할목적으로사용 일반적으로생활에서자동문이나엘리베이터,

More information

Microsoft PowerPoint - 09-Pipe

Microsoft PowerPoint - 09-Pipe 9. 파이프 상명대학교소프트웨어학부 파이프 시그널은이상한사건이나오류를처리하는데는이용하지만, 한프로세스로부터다른프로세스로대량의정보를전송하는데는부적합하다. 파이프 한프로세스를다른관련된프로세스에연결시켜주는단방향의통신채널 2 pipe() Usage #include int pipe(int filedes[2]); 3 < ex_1.c > #include

More information

Microsoft PowerPoint - polling.pptx

Microsoft PowerPoint - polling.pptx 지현석 (binish@home.cnu.ac.kr) http://binish.or.kr Index 이슈화된키보드해킹 최근키보드해킹이슈의배경지식 Interrupt VS polling What is polling? Polling pseudo code Polling 을이용한키로거분석 방어기법연구 이슈화된키보드해킹 키보드해킹은연일상한가! 주식, 펀드투자의시기?! 최근키보드해킹이슈의배경지식

More information

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다.

2. GCC Assembler와 AVR Assembler의차이 A. GCC Assembler 를사용하는경우 i. Assembly Language Program은.S Extension 을갖는다. ii. C Language Program은.c Extension 을갖는다. C 언어와 Assembly Language 을사용한 Programming 20011.9 경희대학교조원경 1. AVR Studio 에서사용하는 Assembler AVR Studio에서는 GCC Assembler와 AVR Assmbler를사용한다. A. GCC Assembler : GCC를사용하는경우 (WinAVR 등을사용하는경우 ) 사용할수있다. New Project

More information

untitled

untitled EZ-TFT700(T) : EZ-TFT700(T) : Rev.000 Rev No. Page 2007/08/03 Rev.000 Rev.000. 2007/12/12 Rev.001 1.6 Allstech,,. EZ-TFT700(T). Allstech EZ-TFT700(T),,. EZ-TFT700(T) Allstech. < > EZ-TFT Information(13h)

More information

본 강의에 들어가기 전

본 강의에 들어가기 전 C 기초특강 종합과제 과제내용 구조체를이용하여교과목이름과코드를파일로부터입력받아관리 구조체를이용하여학생들의이름, 학번과이수한교과목의코드와점수를파일로부터입력 학생개인별총점, 평균계산 교과목별이수학생수, 총점및평균을계산 결과를파일에저장하는프로그램을작성 2 Makefile OBJS = score_main.o score_input.o score_calc.o score_print.o

More information

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D>

<4D F736F F F696E74202D20BBB7BBB7C7D15F FBEDFB0A3B1B3C0B05FC1A638C0CFC2F72E BC8A3C8AF20B8F0B5E55D> 뻔뻔한 AVR 프로그래밍 The Last(8 th ) Lecture 유명환 ( yoo@netplug.co.kr) INDEX 1 I 2 C 통신이야기 2 ATmega128 TWI(I 2 C) 구조분석 4 ATmega128 TWI(I 2 C) 실습 : AT24C16 1 I 2 C 통신이야기 I 2 C Inter IC Bus 어떤 IC들간에도공통적으로통할수있는 ex)

More information

MAX+plus II Getting Started - 무작정따라하기

MAX+plus II Getting Started - 무작정따라하기 무작정 따라하기 2001 10 4 / Version 20-2 0 MAX+plus II Digital, Schematic Capture MAX+plus II, IC, CPLD FPGA (Logic) ALTERA PLD FLEX10K Series EPF10K10QC208-4 MAX+plus II Project, Schematic, Design Compilation,

More information

Chap04(Signals and Sessions).PDF

Chap04(Signals and Sessions).PDF Signals and Session Management 2002 2 Hyun-Ju Park (Signal)? Introduction (1) mechanism events : asynchronous events - interrupt signal from users : synchronous events - exceptions (accessing an illegal

More information

BMP 파일 처리

BMP 파일 처리 BMP 파일처리 김성영교수 금오공과대학교 컴퓨터공학과 학습내용 영상반전프로그램제작 2 Inverting images out = 255 - in 3 /* 이프로그램은 8bit gray-scale 영상을입력으로사용하여반전한후동일포맷의영상으로저장한다. */ #include #include #define WIDTHBYTES(bytes)

More information

강의10

강의10 Computer Programming gdb and awk 12 th Lecture 김현철컴퓨터공학부서울대학교 순서 C Compiler and Linker 보충 Static vs Shared Libraries ( 계속 ) gdb awk Q&A Shared vs Static Libraries ( 계속 ) Advantage of Using Libraries Reduced

More information

06Àå

06Àå Chapter 5 Chapter 6 Chapter 7 chapter 6 Part 1 6.1 Part 2 Part 3 145 146 Chapter 5 Chapter 6 Chapter 7 Part 1 Part 2 Part 3 147 148 Chapter 5 Chapter 6 Chapter 7 Part 1 Part 2 Part 3 149 150 Chapter 5

More information

Microsoft Word - KPMC-400,401 SW 사용 설명서

Microsoft Word - KPMC-400,401 SW 사용 설명서 LKP Ethernet Card SW 사용설명서 Version Information Tornado 2.0, 2.2 알 림 여기에실린내용은제품의성능향상과신뢰도의증대를위하여예고없이변경될수도있습니다. 여기에실린내용의일부라도엘케이일레븐의사전허락없이어떠한유형의매체에복사되거나저장될수없으며전기적, 기계적, 광학적, 화학적인어떤방법으로도전송될수없습니다. 엘케이일레븐경기도성남시중원구상대원동

More information

슬라이드 1

슬라이드 1 / 임베디드시스템개요 / 임베디드운영체제 / 디바이스드라이버 01 Linux System Architecture Application Area Application System Call Interface BSD Socket Virtual File System INET(AF_INET) Kernel Area Buffer Cache Network Subsystem

More information

한글사용설명서

한글사용설명서 ph 2-Point (Probe) ph (Probe) ON/OFF ON ph ph ( BUFFER ) CAL CLEAR 1PT ph SELECT BUFFER ENTER, (Probe) CAL 1PT2PT (identify) SELECT BUFFER ENTER, (Probe), (Probe), ph (7pH)30 2 1 2 ph ph, ph 3, (,, ) ON

More information

Microsoft Word doc

Microsoft Word doc 1. 디바이스드라이버 [ GPIO ] 1.1. GPIO 란 GPIO(General Purpose Input/Output) 란일반적인용도로사용가능한디지털입출력기능의 Port pins 이다. S3C2410의 GPIO는총 117개이며각각이 pin 들은 input/output으로프로그램되거나인터럽트 source로사용될수있다. S3C2410의대부분의 GPIO는단순히디지털입출력뿐만아니라부가적인기능을갖고있다.

More information

hlogin2

hlogin2 0x02. Stack Corruption off-limit Kernel Stack libc Heap BSS Data Code off-limit Kernel Kernel : OS Stack libc Heap BSS Data Code Stack : libc : Heap : BSS, Data : bss Code : off-limit Kernel Kernel : OS

More information

Microsoft PowerPoint - IOControl [호환 모드]

Microsoft PowerPoint - IOControl [호환 모드] 목차 Input/Output Control I/O Control Mechanism mmap function munmap function RAM Area Access LED Control 4 digits 7 Segment Control Text LCD Control 1 2 I/O Control Mechanism (1) I/O Control Mechanism (2)

More information

bn2019_2

bn2019_2 arp -a Packet Logging/Editing Decode Buffer Capture Driver Logging: permanent storage of packets for offline analysis Decode: packets must be decoded to human readable form. Buffer: packets must temporarily

More information

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070>

<443A5C4C C4B48555C B3E25C32C7D0B1E25CBCB3B0E8C7C1B7CEC1A7C6AE425CBED0C3E0C7C1B7CEB1D7B7A55C D616E2E637070> #include "stdafx.h" #include "Huffman.h" 1 /* 비트의부분을뽑아내는함수 */ unsigned HF::bits(unsigned x, int k, int j) return (x >> k) & ~(~0

More information

untitled

untitled while do-while for break continue while( ) ; #include 0 i int main(void) int meter; int i = 0; while(i < 3) meter = i * 1609; printf("%d %d \n", i, meter); i++; return 0; i i< 3 () 0 (1)

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 1 12 장파이프 2 12.1 파이프 파이프원리 $ who sort 파이프 3 물을보내는수도파이프와비슷 한프로세스는쓰기용파일디스크립터를이용하여파이프에데이터를보내고 ( 쓰고 ) 다른프로세스는읽기용파일디스크립터를이용하여그파이프에서데이터를받는다 ( 읽는다 ). 한방향 (one way) 통신 파이프생성 파이프는두개의파일디스크립터를갖는다. 하나는쓰기용이고다른하나는읽기용이다.

More information

untitled

untitled Block Device Driver in Linux Embedded System Lab. II Embedded System Lab. II 2 Define objective of applications using device Study Hardware manual (Registers) (vector number) Understand interface to related

More information

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F >

<4D F736F F F696E74202D20B8B6C0CCC5A9B7CEC7C1B7CEBCBCBCAD202839C1D6C2F7207E203135C1D6C2F > 10주차 문자 LCD 의인터페이스회로및구동함수 Next-Generation Networks Lab. 5. 16x2 CLCD 모듈 (HY-1602H-803) 그림 11-18 19 핀설명표 11-11 번호 분류 핀이름 레벨 (V) 기능 1 V SS or GND 0 GND 전원 2 V Power DD or V CC +5 CLCD 구동전원 3 V 0 - CLCD 명암조절

More information

(SW3704) Gingerbread Source Build & Working Guide

(SW3704) Gingerbread Source Build & Working Guide (Mango-M32F4) Test Guide http://www.mangoboard.com/ http://cafe.naver.com/embeddedcrazyboys Crazy Embedded Laboratory www.mangoboard.com cafe.naver.com/embeddedcrazyboys CRZ Technology 1 Document History

More information

1217 WebTrafMon II

1217 WebTrafMon II (1/28) (2/28) (10 Mbps ) Video, Audio. (3/28) 10 ~ 15 ( : telnet, ftp ),, (4/28) UDP/TCP (5/28) centralized environment packet header information analysis network traffic data, capture presentation network

More information

도 1 명세서 도면의 간단한 설명 도 1은 본 발명의 바람직한 실시예에 따른 데이터 송수신 장치의 회로도이다. 도 2는 도 1에 도시된 등화기의 일 실시예를 보여주는 회로도이다. 도 3은 도 1에 도시된 프리엠퍼시스 회로의 일 실시예를 보여주는 회로도이다. 도 4는 본

도 1 명세서 도면의 간단한 설명 도 1은 본 발명의 바람직한 실시예에 따른 데이터 송수신 장치의 회로도이다. 도 2는 도 1에 도시된 등화기의 일 실시예를 보여주는 회로도이다. 도 3은 도 1에 도시된 프리엠퍼시스 회로의 일 실시예를 보여주는 회로도이다. 도 4는 본 (51) Int. Cl. 7 H04B 3/04 (19)대한민국특허청(KR) (12) 등록특허공보(B1) (45) 공고일자 (11) 등록번호 (24) 등록일자 2005년08월24일 10-0509949 2005년08월17일 (21) 출원번호 10-2003-0082348 (65) 공개번호 10-2005-0048423 (22) 출원일자 2003년11월19일 (43)

More information

목차 1. 제품 소개... 4 1.1 특징... 4 1.2 개요... 4 1.3 Function table... 5 2. 기능 소개... 6 2.1 Copy... 6 2.2 Compare... 6 2.3 Copy & Compare... 6 2.4 Erase... 6 2

목차 1. 제품 소개... 4 1.1 특징... 4 1.2 개요... 4 1.3 Function table... 5 2. 기능 소개... 6 2.1 Copy... 6 2.2 Compare... 6 2.3 Copy & Compare... 6 2.4 Erase... 6 2 유영테크닉스( 주) 사용자 설명서 HDD014/034 IDE & SATA Hard Drive Duplicator 유 영 테 크 닉 스 ( 주) (032)670-7880 www.yooyoung-tech.com 목차 1. 제품 소개... 4 1.1 특징... 4 1.2 개요... 4 1.3 Function table... 5 2. 기능 소개... 6 2.1 Copy...

More information

Remote UI Guide

Remote UI Guide Remote UI KOR Remote UI Remote UI PDF Adobe Reader/Adobe Acrobat Reader. Adobe Reader/Adobe Acrobat Reader Adobe Systems Incorporated.. Canon. Remote UI GIF Adobe Systems Incorporated Photoshop. ..........................................................

More information

제1장 Unix란 무엇인가?

제1장  Unix란 무엇인가? 4 장파일 컴퓨터과학과박환수 1 2 4.1 시스템호출 컴퓨터시스템구조 유닉스커널 (kernel) 하드웨어를운영관리하여다음과같은서비스를제공 파일관리 (File management) 프로세스관리 (Process management) 메모리관리 (Memory management) 통신관리 (Communication management) 주변장치관리 (Device

More information

SMB_ICMP_UDP(huichang).PDF

SMB_ICMP_UDP(huichang).PDF SMB(Server Message Block) UDP(User Datagram Protocol) ICMP(Internet Control Message Protocol) SMB (Server Message Block) SMB? : Microsoft IBM, Intel,. Unix NFS. SMB client/server. Client server request

More information

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt

Microsoft PowerPoint - 3ÀÏ°_º¯¼ö¿Í »ó¼ö.ppt 변수와상수 1 변수란무엇인가? 변수 : 정보 (data) 를저장하는컴퓨터내의특정위치 ( 임시저장공간 ) 메모리, register 메모리주소 101 번지 102 번지 변수의크기에따라 주로 byte 단위 메모리 2 기본적인변수형및변수의크기 변수의크기 해당컴퓨터에서는항상일정 컴퓨터마다다를수있음 short

More information

CPX-E-SYS_BES_C_ _ k1

CPX-E-SYS_BES_C_ _ k1 CPX-E 8727 27-7 [875294] CPX-E-SYS-KO CODESYS, PI PROFIBUS PROFINET (). :, 2 Festo CPX-E-SYS-KO 27-7 ... 5.... 5.2... 5.3... 5.4... 5.5... 5 2... 6 2.... 6 2..... 6 2..2 CPX-E... 7 2..3 CPX-E... 9 2..4...

More information

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션 @ Lesson 2... ( ). ( ). @ vs. logic data method variable behavior attribute method field Flow (Type), ( ) member @ () : C program Method A ( ) Method B ( ) Method C () program : Java, C++, C# data @ Program

More information

제12장 파일 입출력

제12장 파일 입출력 제 4 장파일입출력 리눅스시스템프로그래밍 청주대학교전자공학과 한철수 1 시스템호출 (system call) 파일 (file) 임의접근 (random access) 주요학습내용 2 4.1 절 커널의역할 (kernel) 커널 (kernel) 은운영체제의핵심부분으로서, 하드웨어를운영관리하는여러가지서비스를제공함 파일관리 (File management) 디스크 프로세스관리

More information

Microsoft Word - FS_ZigBee_Manual_V1.3.docx

Microsoft Word - FS_ZigBee_Manual_V1.3.docx FirmSYS Zigbee etworks Kit User Manual FS-ZK500 Rev. 2008/05 Page 1 of 26 Version 1.3 목 차 1. 제품구성... 3 2. 개요... 4 3. 네트워크 설명... 5 4. 호스트/노드 설명... 6 네트워크 구성... 6 5. 모바일 태그 설명... 8 6. 프로토콜 설명... 9 프로토콜 목록...

More information

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서

PowerChute Personal Edition v3.1.0 에이전트 사용 설명서 PowerChute Personal Edition v3.1.0 990-3772D-019 4/2019 Schneider Electric IT Corporation Schneider Electric IT Corporation.. Schneider Electric IT Corporation,,,.,. Schneider Electric IT Corporation..

More information

Microsoft PowerPoint - chap13-입출력라이브러리.pptx

Microsoft PowerPoint - chap13-입출력라이브러리.pptx #include int main(void) int num; printf( Please enter an integer: "); scanf("%d", &num); if ( num < 0 ) printf("is negative.\n"); printf("num = %d\n", num); return 0; 1 학습목표 스트림의 기본 개념을 알아보고,

More information

untitled

untitled 자료형 기본자료형 : char, int, float, double 등 파생자료형 : 배열, 열거형, 구조체, 공용체 vs struct 구조체 _ 태그 _ 이름 자료형멤버 _ 이름 ; 자료형멤버 _ 이름 ;... ; struct student int number; // char name[10]; // double height; // ; // x값과 y값으로이루어지는화면의좌표

More information

C 프로그래밍 언어 입문 C 프로그래밍 언어 입문 김명호저 숭실대학교 출판국 머리말..... C, C++, Java, Fortran, Python, Ruby,.. C. C 1972. 40 C.. C. 1999 C99. C99. C. C. C., kmh ssu.ac.kr.. ,. 2013 12 Contents 1장 프로그래밍 시작 1.1 C 10 1.2 12

More information

2009년 상반기 사업계획

2009년 상반기 사업계획 소켓프로그래밍활용 IT CookBook, 유닉스시스템프로그래밍 학습목표 소켓인터페이스를활용한다양한프로그램을작성할수있다. 2/23 목차 TCP 기반프로그래밍 반복서버 동시동작서버 동시동작서버-exec함수사용하기 동시동작서버-명령행인자로소켓기술자전달하기 UDP 프로그래밍 3/23 TCP 기반프로그래밍 반복서버 데몬프로세스가직접모든클라이언트의요청을차례로처리 동시동작서버

More information

1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 1 2 3 4 5 6 7 8 9 10 #define _CRT_SECURE_NO_WARNINGS #include #include main() { char ch; printf(" 문자 1개를입력하시오 : "); scanf("%c", &ch); if (isalpha(ch))

More information

Chapter 4. LISTS

Chapter 4. LISTS 연결리스트의응용 류관희 충북대학교 1 체인연산 체인을역순으로만드는 (inverting) 연산 3 개의포인터를적절히이용하여제자리 (in place) 에서문제를해결 typedef struct listnode *listpointer; typedef struct listnode { char data; listpointer link; ; 2 체인연산 체인을역순으로만드는

More information

[ 융합과학 ] 과학고 R&E 결과보고서 뇌파를이용한곤충제어 연구기간 : ~ 연구책임자 : 최홍수 ( 대구경북과학기술원 ) 지도교사 : 박경희 ( 부산일과학고 ) 참여학생 : 김남호 ( 부산일과학고 ) 안진웅 ( 부산일과학고 )

[ 융합과학 ] 과학고 R&E 결과보고서 뇌파를이용한곤충제어 연구기간 : ~ 연구책임자 : 최홍수 ( 대구경북과학기술원 ) 지도교사 : 박경희 ( 부산일과학고 ) 참여학생 : 김남호 ( 부산일과학고 ) 안진웅 ( 부산일과학고 ) [ 융합과학 ] 과학고 R&E 결과보고서 뇌파를이용한곤충제어 연구기간 : 2013. 3. 1 ~ 2014. 2. 28 연구책임자 : 최홍수 ( 대구경북과학기술원 ) 지도교사 : 박경희 ( 부산일과학고 ) 참여학생 : 김남호 ( 부산일과학고 ) 안진웅 ( 부산일과학고 ) 장은영 ( 부산일과학고 ) 정우현 ( 부산일과학고 ) 조아현 ( 부산일과학고 ) 1 -

More information

고급 프로그래밍 설계

고급 프로그래밍 설계 UNIT 13 라즈베리파이블루투스 광운대학교로봇 SW 교육원 최상훈 Bluetooth Module 2 Bluetooth Slave UART Board UART 인터페이스용블루투스모듈 slave/device mode 라즈베리파이 GPIO 3 < 라즈베리파이 B+ 의 P1 헤더핀 GPIO 배치도 > wiringpi 라이브러리 4 라즈베리파이 GPIO 라이브러리

More information

LCD Display

LCD Display LCD Display SyncMaster 460DRn, 460DR VCR DVD DTV HDMI DVI to HDMI LAN USB (MDC: Multiple Display Control) PC. PC RS-232C. PC (Serial port) (Serial port) RS-232C.. > > Multiple Display

More information