Linux Kernel

What are the timer functions to measure the kernel function time

Kernal Function Timefunction "do_gettimefoday" is used to get the time value in kernel.

struct timeval time;

unsigned long local_time;

do_gettimeofday(&time); local_time = (u32)(time.tv_sec - (sys_tz.tz_minuteswest * 60)); rtc_time_to_tm(local_time, &tm);

printk(" @ (%04d-%02d-%02d %02d:%02d:%02d)\n", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);

Difference between kernel load address and entry point

Load Address is RAM location where the kernel binary image is to be copied. Entry Point is the Location of the copied binary to be executed by uboot to boot kernel.

Your RAM is mapped at 80000000 and kernel LOAD ADDRESS is 80008000. bootm command uncompress the uImage from copied image location to 80008000 address and then calls the kernel entry point (may be the same address : 80008000) to execute the kernel.

Why all the pins on a chip are not GPIOs?

All the pins in SOC are not GPIO. A specific group of pins mapped as GPIO. Other pins are configured for specific protocols like DDR, SPI, I2C... etc. GPIO is generic pins can be used for any purpose based on user requirement. It can be used for handling IRQs, trigger Resets, Glow LEDs..etc.

for example, Consider a FPGA is connected to SOC via GPIOs. User need to program the FPGA via these GPIO pins. In SOC side user need to write a specific program with mentioned sequence to drive those GPIO to program the FPGA config file