Hi again, I think I know what is the issue here.... Should I read the entire register at once, and then split it into two parts? Every time I read anything from the register, one sample seems to be removed. Am I right? Thanks, JJ
↧
Forum Post: RE: Problem with ADC data handling when reading ID tag.
↧
Forum Post: RE: How to do task Profiling and see (Execution graph) in DSP Bios 5.41?
Thanks Scott, Can the hook function also be used to trace the PRD, SWI and HWI ? Regards, Bhausaheb
↧
↧
Forum Post: Using examples SPI (from pdk_am335x_2_00_02_11) and Profinet (sysbios_ind_sdk_2.1.1.2) together
Hi, my setup: CCS 6.1.3 AM3359 Industrial Communications Engine v2 pdk_am335x_1_0_2 sysbios _ind_sdk_2.1.1.2 i want to use SPI and Profinet on the AM3359 ICE v2. Therefore i started with the in topic named examples. Each of them runs well on board . Now i wanted to combine the two examples, copy and paste the code from the "MCSPI_SlaveMode_MasterExample_icev2AM335x_armExample" into the code of the "profinet_slave_IRT" example. I also added the include paths from the SPI example to the Profinet example. But when compiling i get an error with the line masterSpi = SPI_open(BOARD_MCSPI_MASTER_INSTANCE-1, NULL); The compiler does not know the expression "BOARD_MCSPI_MASTER_INSTANCE". What is the problem ? Thanks in advance
↧
Forum Post: RE: PRU-ICSS does not receives an interrupt event from EHRPWM0.
Hi Vladimir, Have you enabled the interrupts as described in 4.4.2.3.1 Interrupt Processing -> Interrupt Enabling? The trm says that you should set the corresponding bit in event enable indexed set register (EISR) & host interrupt enable indexed set register (HIEISR). Best Regards, Yordan
↧
Forum Post: RE: CCSV6 build error: xdc.MODULE_NOT_FOUND: xdc.module: no module named 'GPIO' in the package ti.drivers
Hi, Scott Thank you for your review. I did not tested for our app yet because The hardware is not ready newly. Thanks, Yang
↧
↧
Forum Post: RE: HTTP Autentication not working (NDK) - TI-RTOS
Hi Leandro, Can you put a breakpoint in efs_filecheck() which is the function the HTTP server calls to validate the user has access to the requested file. The function takes in the filename, the username, password and realm. Once execution halts there, can you verify if the username/password/realm all match what you set? I'll like to see more of your code if you don't mind maybe I can spot something you're doing wrong. Best, Moses
↧
Forum Post: Dynamically enabling and disabling HWI's
Hi, I'm trying to set up a tcp socket first before I want to sample my ADC using uDMA to transfer the data to a buffer. The tcp socket code is running as a task with a priority of 1 and the HWI with a priority of 1. I call Hwi_disable() before BIOS_start() but it didn't stop the Hwi from running. I tried to call Hwi_disable() at the start of my Hwi interrupt handler but it crashed the program with this: FSR = 0x0008 HFSR = 0x40000000 DFSR = 0x0000000b MMAR = 0xe000ed34 BFAR = 0xe000ed38 AFSR = 0x00000000 Is there anyway I can dynamically change the way the HWI runs and tcp task runs. I basically want to be able to set up the tcp socket, once that's done, I want to sample the ADC and store them and then block the HWI and try to send the samples in the tcp task handler? As an aside, I'm using a TM4C1294XL.
↧
Forum Post: RE: Embedded HTTP Web Server (NDK) stops upon Task Block/Malfunction
Hi Scott, Thanks for your reply. Yes, reducing the malformed task’s priority from 3 to 2 still makes the NDK non responsive. This malformed task is not interacting with NDK & it doesn’t have control over interrupts. It basically collects data from an UART port, analyses the data & updates some global variables. I remember that during some driver implementation (may be the HTTP server of NDK), I had to enable the idle Task. May be it was required to be enabled. My codes do not require the idle task to run as all are put in Tasks with priority above the idle Task. But the particular driver required me to insert “ Task.enableIdleTask = true; ” in .cfg file. To investigate further, I opened TI-RTOS -> Products -> SysBIOS -> Scheduling -> Idle Basic Options -> All Idle Functions. Here I find the following functions added to the list. ti. sysbios .knl.Task.deleteTerminatedTasksFunc ti. sysbios .smp.Load,idleFxn ti.uia. sysbios .LoggerIdle.idleWriteEvent But I don’t know how these functions (if at all) are related to NDK!! - Although, this may not be a proper solution, but for the time being, I have added "Task_sleep(1)" in the malformed task so that the infinite loop in the Task is forced to pass through the Task_sleep(1). This seems to somewhat resolve the issue but I suspect that NDK might be running slow which we may face/realise in future after thorough testing of the system. Also, I may sometimes miss characters/bytes coming in through the UART port. - Regards Soumyajit
↧
Forum Post: Guidelines for mission Critical Software
Hello, Im new to embedded software development and i want to know how to write a mission critical software. are there any guidelines to follow or one can just write it like any desktop application.
↧
↧
Forum Post: XINTF example in F28335
Hi, Im currently working on delfino F28335 anf i want to run the example code of XINTF provided with the kit. I have compiled it but how can i check if its working or not. the example i compiled is xintf_run_from and it simply copies a code section in Zone 7 of XINTF. How can i check whether the code is correctly copied or not?
↧
Forum Post: Jacinto 6 ALSA Audio Capture and Playback Issue
Hi, We are using Jacinto 6 Vayu EVM board.Audio Capture and Playback using ALSA libs APIs working fine in Low volume.When the volume is increased to the maximum level some background noise in playback.We are capturing the audio using AUX cable(Mic input ).Kindly suggest the root cause. The sample code i attached here.The same code working fine in PC but in J6 it makes problem.Is any pin configuration changes we need to do? #define PERIOD_SIZE 1024 #define BUF_SIZE (PERIOD_SIZE * 2) #include #include #include void print_pcm_state(snd_pcm_t *handle, char *name) { switch (snd_pcm_state(handle)) { case SND_PCM_STATE_OPEN: printf("state open %s\n", name); break; case SND_PCM_STATE_SETUP: printf("state setup %s\n", name); break; case SND_PCM_STATE_PREPARED: printf("state prepare %s\n", name); break; case SND_PCM_STATE_RUNNING: printf("state running %s\n", name); break; case SND_PCM_STATE_XRUN: printf("state xrun %s\n", name); break; default: printf("state other %s\n", name); break; } } int setparams(snd_pcm_t *handle, char *name) { snd_pcm_hw_params_t *hw_params; int err; if ((err = snd_pcm_hw_params_malloc (&hw_params)) #include #include void print_pcm_state(snd_pcm_t *handle, char *name) { switch (snd_pcm_state(handle)) { case SND_PCM_STATE_OPEN: printf("state open %s\n", name); break; case SND_PCM_STATE_SETUP: printf("state setup %s\n", name); break; case SND_PCM_STATE_PREPARED: printf("state prepare %s\n", name); break; case SND_PCM_STATE_RUNNING: printf("state running %s\n", name); break; case SND_PCM_STATE_XRUN: printf("state xrun %s\n", name); break; default: printf("state other %s\n", name); break; } } int setparams(snd_pcm_t *handle, char *name) { snd_pcm_hw_params_t *hw_params; int err; if ((err = snd_pcm_hw_params_malloc (&hw_params)) < 0) { fprintf (stderr, "cannot allocate hardware parameter structure (%s)\n", snd_strerror (err)); exit (1); } if ((err = snd_pcm_hw_params_any (handle, hw_params)) < 0) { fprintf (stderr, "cannot initialize hardware parameter structure (%s)\n", snd_strerror (err)); exit (1); } if ((err = snd_pcm_hw_params_set_access (handle, hw_params, SND_PCM_ACCESS_RW_INTERLEAVED)) < 0) { fprintf (stderr, "cannot set access type (%s)\n", snd_strerror (err)); exit (1); } if ((err = snd_pcm_hw_params_set_format (handle, hw_params, SND_PCM_FORMAT_S16_LE)) < 0) { fprintf (stderr, "cannot set sample format (%s)\n", snd_strerror (err)); exit (1); } unsigned int rate = 48000; if ((err = snd_pcm_hw_params_set_rate_near (handle, hw_params, &rate, 0)) < 0) { fprintf (stderr, "cannot set sample rate (%s)\n", snd_strerror (err)); exit (1); } printf("Rate for %s is %d\n", name, rate); if ((err = snd_pcm_hw_params_set_channels (handle, hw_params, 2)) < 0) { fprintf (stderr, "cannot set channel count (%s)\n", snd_strerror (err)); exit (1); } snd_pcm_uframes_t buffersize = BUF_SIZE; if ((err = snd_pcm_hw_params_set_buffer_size_near(handle, hw_params, &buffersize)) < 0) { printf("Unable to set buffer size %li: %s\n", BUF_SIZE, snd_strerror(err)); exit (1);; } snd_pcm_uframes_t periodsize = PERIOD_SIZE; fprintf(stderr, "period size now %d\n", periodsize); if ((err = snd_pcm_hw_params_set_period_size_near(handle, hw_params, &periodsize, 0)) < 0) { printf("Unable to set period size %li: %s\n", periodsize, snd_strerror(err)); exit (1); } if ((err = snd_pcm_hw_params (handle, hw_params)) < 0) { fprintf (stderr, "cannot set parameters (%s)\n", snd_strerror (err)); exit (1); } snd_pcm_uframes_t p_psize; snd_pcm_hw_params_get_period_size(hw_params, &p_psize, NULL); fprintf(stderr, "period size %d\n", p_psize); snd_pcm_hw_params_get_buffer_size(hw_params, &p_psize); fprintf(stderr, "buffer size %d\n", p_psize); snd_pcm_hw_params_free (hw_params); if ((err = snd_pcm_prepare (handle)) < 0) { fprintf (stderr, "cannot prepare audio interface for use (%s)\n", snd_strerror (err)); exit (1); } return 0; } int set_sw_params(snd_pcm_t *handle, char *name) { snd_pcm_sw_params_t *swparams; int err; snd_pcm_sw_params_alloca(&swparams); err = snd_pcm_sw_params_current(handle, swparams); if (err < 0) { fprintf(stderr, "Broken configuration for this PCM: no configurations available\n"); exit(1); } err = snd_pcm_sw_params_set_start_threshold(handle, swparams, PERIOD_SIZE); if (err < 0) { printf("Unable to set start threshold: %s\n", snd_strerror(err)); return err; } err = snd_pcm_sw_params_set_avail_min(handle, swparams, PERIOD_SIZE); if (err < 0) { printf("Unable to set avail min: %s\n", snd_strerror(err)); return err; } if (snd_pcm_sw_params(handle, swparams) < 0) { fprintf(stderr, "unable to install sw params:\n"); exit(1); } return 0; } /************** some code from latency.c *****************/ main (int argc, char *argv[]) { int i; int err; int buf[BUF_SIZE]; snd_pcm_t *playback_handle; snd_pcm_t *capture_handle; snd_pcm_hw_params_t *hw_params; FILE *fin; size_t nread; snd_pcm_format_t format = SND_PCM_FORMAT_S16_LE; if (argc != 3) { fprintf(stderr, "Usage: %s in-card out-card\n", argv[0]); exit(1); } /**** Out card *******/ if ((err = snd_pcm_open (&playback_handle, argv[2], SND_PCM_STREAM_PLAYBACK, 0)) < 0) { fprintf (stderr, "cannot open audio device %s (%s)\n", argv[2], snd_strerror (err)); exit (1); } setparams(playback_handle, "playback"); set_sw_params(playback_handle, "playback"); /*********** In card **********/ if ((err = snd_pcm_open (&capture_handle, argv[1], SND_PCM_STREAM_CAPTURE, 0)) < 0) { fprintf (stderr, "cannot open audio device %s (%s)\n", argv[1], snd_strerror (err)); exit (1); } setparams(capture_handle, "capture"); set_sw_params(capture_handle, "capture"); if ((err = snd_pcm_link(capture_handle, playback_handle)) < 0) { printf("Streams link error: %s\n", snd_strerror(err)); exit(0); } if ((err = snd_pcm_prepare (playback_handle)) < 0) { fprintf (stderr, "cannot prepare playback audio interface for use (%s)\n", snd_strerror (err)); exit (1); } /**************** stuff something into the playback buffer ****************/ if (snd_pcm_format_set_silence(format, buf, 2*BUF_SIZE) < 0) { fprintf(stderr, "silence error\n"); exit(1); } int n = 0; while (n++ < 2) { if (snd_pcm_writei (playback_handle, buf, BUF_SIZE) < 0) { fprintf(stderr, "write error\n"); exit(1); } } /************* COPY ************/ while (1) { int nread; if ((nread = snd_pcm_readi (capture_handle, buf, BUF_SIZE)) != BUF_SIZE) { if (nread < 0) { fprintf (stderr, "read from audio interface failed (%s)\n", snd_strerror (nread)); } else { fprintf (stderr, "read from audio interface failed after %d frames\n", nread); } snd_pcm_prepare(capture_handle); continue; } if ((err = snd_pcm_writei (playback_handle, buf, nread)) != nread) { if (err < 0) { fprintf (stderr, "write to audio interface failed (%s)\n", snd_strerror (err)); } else { fprintf (stderr, "write to audio interface failed after %d frames\n", err); } snd_pcm_prepare(playback_handle); } } snd_pcm_drain(playback_handle); snd_pcm_close (playback_handle); exit (0); } }
↧
Forum Post: RE: NDK stops responding on Ethernet
Seems I still have a problem attaching to the running application. When I attach it correctly stops the code in idle or similar but ROV does not allow access to heap or tasks. For example when looking at heap memory I get: Received exception from ROV server: The module ti. sysbios .heaps.HeapMem has static instances, but ROV could not find the required symbol 'ti_ sysbios _heaps_HeapMem_Object__table__V' to locate them. Ensure the application contains references to the instance. Resuming the code runs fine, as does single stepping. My debug configuration is pointed to my code with Load Symbols Only selected. The OS Aware Debug Options are set to Never, but neither of the other available options seem relevant to simply connecting to the running target.
↧
Forum Post: RE: Where can I get a working version of pulseaudio for am335x SDK?
Hello Vladimir, Here in the software manifest you can find the pulse audio version for the latest PSDK and rebuild these packages in your OE build system for your target. Best regards, Kemal
↧
↧
Forum Post: RE: NDK stops responding on Ethernet
Just as an update to this. I have included a copy of the EmacSnow.c file into my project so I can make the EMACSnow_private structure viewable and I can print out diagnostics without the need to use the ROV or stop my application. I have observed that I get a number of the EMACSnow_private.abnormalInts, is this to be expected or does this indicate some sort of issue on my network? Both Tx and Rx packets and total interrupts are incrementing and there are no dropped packets for either Tx or Rx. So now I will be able to give you the data next time it stops working.
↧
Forum Post: RE: CC1310 wakeup at fixed time interrupt during standby
Hi Scott, your observation makes sense. The code above only serves to test if it actually changes the period regardless of the timeout. It is obvious that in real implementation will change the time-out and the period. The code is included in the end of main Task: static void txTaskFunction(UArg arg0, UArg arg1) { ..... Here..... }
↧
Forum Post: RE: BeagleBone LCD works but ... FBDEv or DRM ?
Hi Some news, its ok i success to correct the booting issue i had, by installing on uSD an image . I just remove the ligne in the uEnv.txt. So i'm able to boot again on my flash like before. So concerning the dts file, is there something special to do to place in 24bits mode and change the frequency ? How to be sure that my system with DRM and not FBDEV please ? Thank you
↧
Forum Post: RE: NDK stops responding on Ethernet
Sample capture after running for a while EMAC DIAGS Rx = 11260 Rx Dropped =0 Tx = 16 Tx Dropped =0 Ints= 10904 Abnormal Ints=27
↧
↧
Forum Post: RE: Facedetect demo
Hi User, Before loading the program, did you do the following? 1. Using the target configuration file, do "Test connection" and check the CCS establishes the connection with the target through the emulator. 2. Appropriate OMAPL138 gel file is located in the target configuration file. 3. The gel file is happenned to run using the "connect target" option on ARM core first and then the DSP core. 4. Loaded the facedetect demo into the DSP core of OMAPL138. Revert if come across any problems in any of the steps.
↧
Forum Post: RE: AM335x SYS/BIOS: How do I install my own page fault handler?
Ah, there it is! Thank you. BTW, in the interests of getting the fishing pole instead of just the fish: How did you determine that ti_ sysbios _family_arm_exc_Exception_excHandlerDataAsm was the default handler?
↧
Forum Post: RE: How to hook the NetHooks in ndk application?
Hi Moses, Thanks for your answer. No, these hooks have not been configured in .cfg file - after that, everything worked fine. Thanks JJ
↧