Professional Documents
Culture Documents
Preexam3 Test
Preexam3 Test
Det er en god idé at have en backup af klartekst/kode lokalt på din computer, for
det tilfælde at QuestionWriter skulle gå ned el. lignende.
Held og lykke!
Question 1 of 16
systemctl list-units
lsmod
ls -l /dev
cat /proc/msg
(5 points) | ___
1 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
Question 2 of 16
User Space
Kernel + User Space
Må ikke bruges
Kernel Space
(5 points) | ___
Question 3 of 16
Hvad fortæller det om driver & devices når der i /dev folderen findes fire filer med
ens major nummer, men forskellige minor numre?
1 driver og 4 devices
ukendt antal drivers og 4 devices
4 drivers og 1 device
1 driver og et ukendt antal devices
(5 points) | ___
2 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
Question 4 of 16
Hvilken virtuel fil under /proc kan være ny)ing til probing af interrupt linjer, hvor
der endnu ikke er installeret en interrupt handler, dvs request_irq() endnu ikke er
kaldt?
/proc/source
/proc/stat
/proc/interrupt
/proc/device
(5 points) | ___
Question 5 of 16
modprobe
rmmod
lsmod
rm
(5 points) | ___
3 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
Question 6 of 16
(5 points) | ___
4 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
Question 7 of 16
ssize_t my_chrdrv_read(struct file *filep, char __user *buf, size_t count, loff_t *f_pos)
{
char readBuf[] = "ABCD";
copy_to_user(buf, readBuf, len);
...}
Kaldes med parameteren count=2. Hvad skal størrelsen af ʺlenʺ sæ)es til?
4
5
2
3
(5 points) | ___
Question 8 of 16
I henhold til Linuxʹ Device model så er følgende drivere, fundet i Linuxʹ source
tree, at betegne som: (match par)
(5 points) | ___
5 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
Question 9 of 16
Hviken ʺclock modeʺ og ʺbits_per_wordʺ anvender den viste SPI enhed? (Du skal
sæ)e to krydser)
CPOL = 1 ; CPHA = 1
CPOL = 0 ; CPHA = 1
CPOL = 0 ; CPHA = 0
CPOL = 1 ; CPHA = 0
(6 points) | ___
Question 10 of 16
add_timer()
wait_event_timeout()
usleep()
udelay()
(5 points) | ___
6 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
Question 11 of 16
For at angive at dit system har et givent SPI device, skal du udfylde en
spi_board_info struct. Hvor finder du den relavante information? (match par)
(5 points) | ___
Question 12 of 16
En SPI driverʹs init() metode skal implementeres. Angiv den korrekte rækkefølge
af funktionerne:
A. register_chrdev_region()
B. cdev_init()
C. cdev_add()
D. spi_register_driver()
1.
2.
3.
4.
(5 points) | ___
7 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
Question 13 of 16
I en ADC driver som anvender SysFS interfacet skal a)ribu)en ʺgainʺ som bruger
metoden ʺadc_gain_store()ʺ tilføjes som en default a)ribute. A)ribu)en skal
derfor indsæ)es i device_a)tribute structʹen nedenfor:
static struct device_attribute adc_class_attrs[] = {
(din attribute angivelse),
__ATTR_NULL,
};
Det er din opgave at skrive den manglende a)ibute deklaration, ex
__ATTR(..indhold...) i feltet nedenfor
(5 points) | ___
8 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
Question 14 of 16
Forklar i klartekst hvordan data overføres fra en user space applikation til en
device driver. Du skal herunder forklare hvilke funktioner som anvendes i hhv.
user space applikationen og kernel space driveren, samt hvorfor.
(9 points) | ___
9 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
Question 15 of 16
User Space Applikationen kan kun læse med en hyppighed på 8-10 Hz, hvorfor et
mellemlager i form af en FIFO er nødvendig i driveren. En læsning fra user space
består typisk af flere samples, således at FIFOʹen ikke overflowʹer.
Systemet stiller ud over de almindelige gpio, interrupt mm APIʹer som kendt fra
Devkit8000 også følgende APIʹer til rådighed:
10 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
// adc.h
// Functions are non-blocking
typedef struct adc adc; // Declaration of struct - content not important here
/*
adc_init(): No return value
*/
void adc_init(adc *cthis);
/*
adc_get_value(): Returns 0 on success
@param value Value read from A/D Converter
*/
int adc_get_value(adc *cthis, unsigned char *value);
// fifo.h
// Functions are non-blocking
typedef struct fifo fifo; // Declaration of struct - content not important here
/*
fifo_init(): No return value
@param fifo_size Depth of FIFO
*/
void fifo_init(fifo *cthis, unsigned int fifo_size);
/*
fifo_put(): Returns number of bytes written to the FIFO
@param value Data to be stored in the FIFO
@param length Number of bytes desired to be stored
*/
int fifo_put(fifo *cthis, unsigned char *value, unsigned int length);
/*
fifo_get(): Returns number of bytes read from the FIFO
@param value Data read from the FIFO
@param length Number of bytes desired to be read
*/
int fifo_get(fifo *cthis, unsigned char *value, unsigned int length);
Nedenfor er vist et udsnit af device driveren, ekg.c. Her er desuden angivet hvilke
kodestumper som du skal implementere
// ekg.c
static struct adc ekg_adc;
static struct fifo ekg_fifo;
static struct cdev ekg_dev;
struct file_operations ekg_fops;
static int devno;
ssize_t ekg_read(struct file *filep, char __user *buf, size_t count, loff_t *f_pos)
{
char read_buf[255];
int len;
11 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
12 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
13 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
14 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
15 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
16 of 17 02/01/2021, 12.29
Question Writer Quiz Print Version
Question 16 of 16
Hvis vi vil lave en SPI driver som understø)er multiple SPI devices, så skal vi
opre)e en mapning mellem minor numre og SPI devices, men i hvilken funktion
skal vi gøre de)e?
read()
probe()
open()
init()
(5 points) | ___
You have reached the end of the quiz. You may still go back and change your
answers. Click next when you are sure you want to move on.
17 of 17 02/01/2021, 12.29