On Wed, Feb 28, 2018 at 8:19 PM, Greg Gallagher <g...@embeddedgreg.com> wrote:
> What's your prototype for dummy_write?  Can you post the function
> definition.  It looks like there's a rt_write is expecting a different
> type.
>

OK it is working now after adding "const" to void *buf in write function.
Thank you for the clue :)

Regards,
Pintu


> On Wed, Feb 28, 2018 at 7:16 AM, Pintu Kumar <pintu.p...@gmail.com> wrote:
>> Hi,
>>
>> I am getting some error while building a RTDM driver. Please check my
>> inline reply.
>>
>>
>> On Tue, Feb 27, 2018 at 7:09 PM, Pintu Kumar <pintu.p...@gmail.com> wrote:
>>> Dear Greg & Jan,
>>>
>>> Thank you so much for your help. Yes I am looking into existing sample
>>> drivers to understand. I think I got some clue.
>>> Basically I am developing a dummy RTDM char driver for some
>>> experimentation and analysis purpose.
>>> As you said, since there is no proper documentation for developing a
>>> RTDM driver, I might be having some more silly queries (if I am
>>> stuck).
>>>
>>> 1)
>>>> What's confusing about the context?
>>> As I see, there is a context_size that we need to set in rtdm_driver 
>>> structure.
>>> Is this really required to set ? Can I set it to 0 ?
>>> Anyways, I currently set like this (for time being):
>>> struct dummy_context {
>>>         unsigned char *buffer;
>>>         unsigned int len;
>>> };
>>> Hope this fine ?
>>>
>>> 2)
>>>> The other question is do you need at RTDM driver?
>>> Yes, I need to develop a RTDM driver because I need to compare it with
>>> normal kernel driver.
>>> Later I need to add some specific use case for some purpose.
>>>
>>> 3) How do we allocate memory in RTDM driver ?
>>>     I see rtdm_malloc()/free() is used. Is this in kernel allocation
>>> like kmalloc/vmalloc ?
>>>     Or, I need to directly use kmalloc/vmalloc itself , considering
>>> similar scenario like normal kernel approach.
>>>
>>> 4) ^^Most important^^: how to I compile a sample RTDM char driver?
>>>     Is it the same method like normal kernel Makefile and using the
>>> xeno_config in addition ?
>>>     Is there any RTDM Makefile reference available ?
>>>
>>
>> Hi,
>>
>> I get this errors when compiling a sample RTDM driver.
>>
>> rtdummy.c:63:15: error: initialization from incompatible pointer type
>> [-Werror=incompatible-pointer-types]
>>    .write_rt = dummy_write,
>>                ^
>> /home/pintu/rtdummy.c:63:15: note: (near initialization for
>> ‘dummy_driver.ops.write_rt’)
>> cc1: some warnings being treated as errors
>>
>>
>> However, if I comment the write_rt part, the module is build successfully.
>> Why this error is coming only for write part, but not for read, open,
>> ioctl and others ?
>>
>> This is my Makefile (simple Makefile used for building linux kernel module)
>> --------------------------------
>> EXTRA_CFLAGS    += -I$(shell pwd)
>>
>> obj-m := rtdummy.o
>>
>> KDIR := /lib/modules/$(shell uname -r)/build
>> PWD := $(shell pwd)
>>
>> default:
>>         $(MAKE) -C $(KDIR) M=$(PWD) modules
>>
>> clean:
>>         $(MAKE) -C $(KDIR) M=$(PWD) clean
>> --------------------------------
>>
>> This is the structure used:
>>
>> -------------------------------------------------------------
>> static struct rtdm_driver dummy_driver = {
>>         .profile_info           =       RTDM_PROFILE_INFO(dummy,
>>                                                           RTDM_CLASS_DUMMY,
>>                                                           
>> RTDM_SUBCLASS_DUMMY,
>>                                                           0),
>>         .device_flags           =       RTDM_NAMED_DEVICE|RTDM_EXCLUSIVE,
>>         .device_count           =       1,
>>         .context_size           =       sizeof(struct dummy_context),
>>         .ops = {
>>                 .open           =       dummy_open,
>>                 .read_rt        =       dummy_read,
>>                 .write_rt       =       dummy_write,
>>                 .ioctl_rt       =       dummy_ioctl,
>>                 .ioctl_nrt      =       dummy_ioctl,
>>                 .close          =       dummy_close,
>>         },
>> };
>> -------------------------------------------------------------
>>
>> Please let me know how to fix this error ?
>>
>>
>> Thanks,
>> Pintu
>>
>>
>>>
>>> 5) When I install the RTDM driver (using insmod or modprobe), will it
>>> create the /dev node automatically like "misc" ?
>>>     I am registering the driver using: RTDM_CLASS_MISC
>>>
>>>
>>> Thanks,
>>> Pintu
>>>
>>>
>>> On Mon, Feb 26, 2018 at 10:58 PM, Greg Gallagher <g...@embeddedgreg.com> 
>>> wrote:
>>>> You'd have to decide what functionality you want with respect to rt
>>>> and non rt for your driver.  What's confusing about the context?  The
>>>> gpio driver is pretty up to date, you can look at it for some
>>>> guidance.  Unfortunately there isn't a lot of documentation at the
>>>> moment, so your best bet is to look at some of the existing drivers.
>>>> It's easier to answer specific questions you may have about the RTDM
>>>> framework.  The other question is do you need at RTDM driver?  Could
>>>> you use the UDD framework instead?  With the UDD framework you just
>>>> need to support a small RTDM driver and the rest of the driver lives
>>>> in user space.
>>>>
>>>> -Greg
>>>>
>>>> On Mon, Feb 26, 2018 at 12:20 PM, Pintu Kumar <pintu.p...@gmail.com> wrote:
>>>>> Dear Jan,
>>>>>
>>>>> This thread is about porting a normal misc char driver to rtdm model.
>>>>>
>>>>> Anyways I got some clue by looking into rtdmtest driver.
>>>>> But what is confusing to me is the rtdm context_ part and the rt, nrt 
>>>>> part.
>>>>> How can I map this eith my exusting driver?
>>>>> Can I leave the context part NULL and use only rt for all other calls.
>>>>>
>>>>> Thanks,
>>>>> Pintu
>>>>>
>>>>> On 26 Feb 2018 7:54 pm, "Jan Kiszka" <jan.kis...@siemens.com> wrote:
>>>>>>
>>>>>> On 2018-02-26 12:26, Pintu Kumar wrote:
>>>>>> > Hi,
>>>>>> >
>>>>>> > I have a sample linux char driver which I am registering using normal
>>>>>> > misc_register/deregister function.
>>>>>> > In this driver, I have used, open, read, write, ioctl, release system
>>>>>> > calls.
>>>>>> >
>>>>>> > Now I wanted to convert this driver to RTDM interface and compare it.
>>>>>> > Later I wanted to add some more use cases related to interrupt
>>>>>> > processing by connecting some external peripheral.
>>>>>> >
>>>>>> > Firstly, please guide me how to easily convert an existing linux char
>>>>>> > driver to RTDM model.
>>>>>> >
>>>>>>
>>>>>> Conversion of existing Linux UART drivers to RTDM is not straightforward
>>>>>> as the former relies on a larger hierarchy of Linux drivers, starting
>>>>>> with the tty core over the serial core and possibly some chip
>>>>>> abstractions (8250). RTDM, as you can see from the existing drivers in
>>>>>> kernel/drivers/serial, is rather compact and does not come with that
>>>>>> infrastructure, primarily as it has a confined use case. Best is to
>>>>>> study those drivers, use one as template and replace the required
>>>>>> hardware accesses.
>>>>>>
>>>>>> Jan
>>>>>>
>>>>>> --
>>>>>> Siemens AG, Corporate Technology, CT RDA IOT SES-DE
>>>>>> Corporate Competence Center Embedded Linux

_______________________________________________
Xenomai mailing list
Xenomai@xenomai.org
https://xenomai.org/mailman/listinfo/xenomai

Reply via email to