But obviously networking does not actually work yet as the ethernet driver routines need to be filled in with actual implementations. Today we mainly focused on understanding exactly what the USB driver is supposed to do after resetting the hardware. Attend required training session on Wednesday. I have not been able to solve this problem yet, but I am thinking it’s because of memory corruption, which means the bug could be virtually anywhere in the operating system. The stdio test code only very briefly tested formatted input and output, so I added additional test cases that should test the majority of the possible code paths in fscanf and fprintf. Thus, the focus of the bug was narrowed to only the USB code.

Uploader: Kazikora
Date Added: 13 January 2009
File Size: 24.11 Mb
Operating Systems: Windows NT/2000/XP/2003/2003/7/8/10 MacOS 10/X
Downloads: 99976
Price: Free* [*Free Regsitration Required]

U-Boot – [PATCH] net: Add ag7xxx driver for Atheros MIPS

But obviously networking does not actually work yet as the ethernet driver routines need to be filled in with actual implementations. We initially focused on the two scheduling-related tests and were eventually able to determine that the bug was in the tests themselves, as they were subject to a race condition where the test would fail if a reschedule, triggered by a timer interrupt, occurred at a certain point in the code.

This is expected at this point because doing this requires actually sending messages over the USB bus, which will require fixing our code that is supposed to do this. Meanwhile, a thread in the host controller driver waits on this queue whenever a hardware channel is free, grabs the next available transfer request, and starts it on the hardware channel. The code size is also extremely large, totaling lines not even counting OS-specific code in a separate directory.

In the late morning Farzeen, Tyler, and I met with Dr.

Even if a USB device is non-removable, there are no guarantees as to how long it will take for the hub to which it’s attached to report that it exists. Next, these transfers needed to be implemented for actual hubs, which I have yet to get fully working yet to due the various quirks of interrupt transfers and the lack of documentation for the hardware.

It was surprising to find this was the case, since this seems to be a major flaw in the design.

[source] ar71xx: prevent spurious ethernet resets from dma hang check false positives

Brylow some of the work I had done on USB, and we agreed that soon I need to begin summarizing the work, e. I understand the desire to avoid placing any ‘non-stable’ builds in the main downloads section, but how about at least posting one in the forums with a note indicating where it’s built from and why?


It was then possible to bring up the network interface and then ping it and get a response. This makes sense, but I have not implemented interrupt transfers yet, which likely should be my next task.

Brylow expressed frustration with the lack of good quality documentation about current and ag71xxx hardware. However, power ag71xxx on the BCM uses the mailbox mechanism for communicating with the GPU, which the framebuffer driver does as well, so there is still an opportunity for sharing some of this code with the framebuffer driver.

This was crucial because over the past week or two I’ve had to change my understanding of what some of the registers do, thereby making some of the existing documentation I wrote incorrect or incomplete.

[PATCH] net: Add ag7xxx driver for Atheros MIPS

I was not able to build the full SCC version due to a missing platform-specific tool, but I believe I caught most of the regressions introduced by the changes I made to the build system.

Brylow to read through the current draft, I spent most of today working on the USB code a bit more. Brylow had stated that the research version of Embedded Xinu in the SVN repo had a DHCP client, but it turns out that it is only present in an older version of Embedded Xinu and the code is not source-compatible with the current Embedded Xinu.

Our next task was to get the system shell working, which requires having a working interrupt handler for the UART. Tyler and I continued working on USB support.

With the above software polling method implemented, the interrupts from the internal hub are limited to the polling rate. But as was a problem for both the paper and previous talk, summarizing our work is difficult because most of our work to this point has been technical and very complicated, which is generally not what people are interested in hearing, even though this work is a necessary prerequisite to the primary end goal of having a laboratory environment and educational modules for teaching operating systems, embedded systems, networking, and other computer science concepts with Embedded Xinu on the Raspberry Pi.


Since I was mostly waiting for Tyler and Farzeen to finish their sections of the paper and for Dr. Although Farzeen, Tyler, and I wanted to do a combined talk to present our information in a more logical way and have time to demonstrate Embedded Xinu running on the Raspberry Pi, we’re required to all give talks individually. To fix this we had to change the Makefile to link the code with gcc instead, along with the appropriate flag s to prevent gcc from also linking the kernel with the C runtime startup stub.

Since ctxsw is always entered with interrupts disabled, this means interrupts must be explicitly enabled when creating a new thread.

Today I continued revising our paper and added an abstract section. This weekend I had gone through most of our code and improved the comments and fixed various problems.

We also discovered that, although Xinu appears to isolate platform-specific code in its own directory, platform-specific features had creeped into code that was supposed to be platform independent. As an alternative, I prepared a series of 17 linear commits, generally grouping changes by directory, that generates our git master branch from SVN trunk and summarizes the work we did over the summer dthernet detailing platform-independent code we changed, since any Raspberry-Pi specific files are completely new and don’t really need any detailed explanation in the commit messages.

I also fixed a problem where the ethednet size of OUT transfers was not calculated correctly, due to the unexpected behavior of one ag71xd the Host Controller’s registers. The problems with dropped and corrupted packets seemed to be fixed, at least temporarily, by using only 1 USB receive and 1 USB transmit request at the same time.

This actually simplified the code, as now the processor is almost always running in system mode. This was partially successful and I was able to document some important registers or flags, then use this to remove unneeded reads and writes from the device initialization code. In the morning I started to plan merging our code into Dr.